2021-08-31 17:25:24 +02:00

150 lines
22 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="962px" preserveAspectRatio="none" style="width:1166px;height:962px;background:#FFFFFF;" version="1.1" viewBox="0 0 1166 962" width="1166px" zoomAndPan="magnify">
<style>@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono&amp;display=swap');</style>
<defs><filter height="300%" id="f1pe4rt6dopi58" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><path d="M692.875,10 L692.875,44.5999 L672.875,48.5999 L692.875,52.5999 L692.875,87.1997 A0,0 0 0 0 692.875,87.1997 L988.875,87.1997 A0,0 0 0 0 988.875,87.1997 L988.875,20 L978.875,10 L692.875,10 A0,0 0 0 0 692.875,10 " fill="#EBEBEB" filter="url(#f1pe4rt6dopi58)" style="stroke:#383838;stroke-width:1.0;"/><path d="M978.875,10 L978.875,20 L988.875,20 L978.875,10 " fill="#EBEBEB" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="87" x="698.875" y="28.9999">In any thread.</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="128" x="698.875" y="45.7999">Get on demand only.</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="123" x="698.875" y="62.5998">Do not cache result.</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="275" x="698.875" y="79.3997">Do not request in constructor unless needed.</text><rect fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" height="36.7999" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.0;" width="84" x="588.875" y="30.1999"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="64" x="598.875" y="54.1998">getService</text><rect fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" height="36.7999" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.0;" width="88" x="586.875" y="207.9996"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="42" x="596.875" y="231.9996">Return</text><text fill="#000000" font-family="&quot;Roboto Mono,monospace&quot;" font-size="14" lengthAdjust="spacing" textLength="22" x="642.875" y="231.9996">null</text><polygon fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" points="542.375,157.5997,719.375,157.5997,731.375,169.5997,719.375,181.5997,542.375,181.5997,530.375,169.5997,542.375,157.5997" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="15" x="634.875" y="195.5996">no</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="177" x="542.375" y="175.1996">Is Service Declaration Found</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="21" x="731.375" y="166.7997">yes</text><polygon fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" points="583.375,107.1997,678.375,107.1997,690.375,119.1997,678.375,131.1997,583.375,131.1997,571.375,119.1997,583.375,107.1997" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="15" x="634.875" y="145.1996">no</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="95" x="583.375" y="124.7997">Is Light Service</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="21" x="690.375" y="116.3997">yes</text><polygon fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" points="630.875,286.7996,642.875,298.7996,630.875,310.7996,618.875,298.7996,630.875,286.7996" style="stroke:#383838;stroke-width:1.0;"/><polygon fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" points="568.875,381.1995,692.875,381.1995,704.875,393.1995,692.875,405.1995,568.875,405.1995,556.875,393.1995,568.875,381.1995" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="124" x="568.875" y="398.7995">Is Container Active?</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="36" x="520.875" y="390.3995">active</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="195" x="704.875" y="390.3995">disposed or dispose in progress</text><rect fill="#FFFFFF" filter="url(#f1pe4rt6dopi58)" height="429.7994" style="stroke:#000000;stroke-width:1.5;" width="865" x="11" y="415.1995"/><path d="M205,415.1995 L205,424.9995 L195,434.9995 L11,434.9995 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="184" x="14" y="430.1995">synchronized on service class</text><polygon fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" points="208.25,502.3994,293.25,502.3994,305.25,514.3994,293.25,526.3994,208.25,526.3994,196.25,514.3994,208.25,502.3994" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="208.25" y="519.9994">Is Initializing?</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="21" x="175.25" y="511.5994">yes</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="15" x="305.25" y="511.5994">no</text><rect fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" height="53.5999" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.0;" width="183" x="23" y="536.3994"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="39" x="43.5" y="560.3994">Throw</text><text fill="#000000" font-family="&quot;Roboto Mono,monospace&quot;" font-size="14" lengthAdjust="spacing" textLength="99" x="86.5" y="560.3994">PluginException</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="163" x="33" y="577.1993">Cyclic Service Initialization</text><rect fill="#FFFFFF" filter="url(#f1pe4rt6dopi58)" height="252.5995" style="stroke:#000000;stroke-width:1.5;" width="608" x="226" y="536.3994"/><path d="M329,536.3994 L329,546.1993 L319,556.1993 L226,556.1993 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="93" x="229" y="551.3994">non cancelable</text><path d="M466,573.1993 L466,590.9993 L446,594.9993 L466,598.9993 L466,616.7992 A0,0 0 0 0 466,616.7992 L824,616.7992 A0,0 0 0 0 824,616.7992 L824,583.1993 L814,573.1993 L466,573.1993 A0,0 0 0 0 466,573.1993 " fill="#EBEBEB" filter="url(#f1pe4rt6dopi58)" style="stroke:#383838;stroke-width:1.0;"/><path d="M814,573.1993 L814,583.1993 L824,583.1993 L814,573.1993 " fill="#EBEBEB" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="337" x="472" y="592.1993">Avoid getting other services to reduce initialization tree.</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="309" x="472" y="608.9992">As less dependencies, as more faster and reliable.</text><rect fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" height="36.7999" style="stroke:#383838;stroke-width:1.0;" width="118" x="328" y="576.5993"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="98" x="338" y="600.5992">Create Instance</text><rect fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" height="53.5999" style="stroke:#383838;stroke-width:1.0;" width="302" x="236" y="649.7992"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="282" x="246" y="673.7991">Register to be Disposed on Container Dispose</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="310.5" y="690.5991">if Implements</text><text fill="#000000" font-family="&quot;Roboto Mono,monospace&quot;" font-size="14" lengthAdjust="spacing" textLength="68" x="395.5" y="690.5991">Disposable</text><rect fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" height="53.5999" style="stroke:#383838;stroke-width:1.0;" width="268" x="253" y="723.399"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="132" x="321" y="747.399">Load Persistent State</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="263" y="764.1989">if Implements</text><text fill="#000000" font-family="&quot;Roboto Mono,monospace&quot;" font-size="14" lengthAdjust="spacing" textLength="163" x="348" y="764.1989">PersistentStateComponent</text><polygon fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" points="169.75,451.9995,331.75,451.9995,343.75,463.9995,331.75,475.9995,169.75,475.9995,157.75,463.9995,169.75,451.9995" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="15" x="254.75" y="489.9994">no</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="162" x="169.75" y="469.5994">Is Created and Initialized?</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="21" x="343.75" y="461.1995">yes</text><polygon fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" points="250.75,808.9989,262.75,820.9989,250.75,832.9989,238.75,820.9989,250.75,808.9989" style="stroke:#383838;stroke-width:1.0;"/><rect fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" height="36.7999" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.0;" width="230" x="896" y="415.1995"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="39" x="906" y="439.1995">Throw</text><text fill="#000000" font-family="&quot;Roboto Mono,monospace&quot;" font-size="14" lengthAdjust="spacing" textLength="167" x="949" y="439.1995">ProcessCanceledException</text><polygon fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" points="549.875,330.7996,711.875,330.7996,723.875,342.7996,711.875,354.7996,549.875,354.7996,537.875,342.7996,549.875,330.7996" style="stroke:#383838;stroke-width:1.0;"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="15" x="634.875" y="368.7995">no</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="162" x="549.875" y="348.3995">Is Created and Initialized?</text><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="21" x="723.875" y="339.9996">yes</text><polygon fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" points="630.875,864.9989,642.875,876.9989,630.875,888.9989,618.875,876.9989,630.875,864.9989" style="stroke:#383838;stroke-width:1.0;"/><rect fill="#F8F8F8" filter="url(#f1pe4rt6dopi58)" height="36.7999" rx="12.5" ry="12.5" style="stroke:#383838;stroke-width:1.0;" width="119" x="571.375" y="908.9989"/><text fill="#000000" font-family="Roboto,sans-serif" font-size="14" lengthAdjust="spacing" textLength="99" x="581.375" y="932.9988">Return Instance</text><line style="stroke:#383838;stroke-width:1.5;" x1="630.875" x2="630.875" y1="181.5997" y2="207.9996"/><polygon fill="#383838" points="626.875,197.9996,630.875,207.9996,634.875,197.9996,630.875,201.9996" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="731.375" x2="743.375" y1="169.5997" y2="169.5997"/><polygon fill="#383838" points="739.375,213.3996,743.375,223.3996,747.375,213.3996,743.375,217.3996" style="stroke:#383838;stroke-width:1.5;"/><line style="stroke:#383838;stroke-width:1.5;" x1="743.375" x2="743.375" y1="169.5997" y2="266.7996"/><line style="stroke:#383838;stroke-width:1.5;" x1="743.375" x2="630.875" y1="266.7996" y2="266.7996"/><line style="stroke:#383838;stroke-width:1.5;" x1="630.875" x2="630.875" y1="266.7996" y2="286.7996"/><polygon fill="#383838" points="626.875,276.7996,630.875,286.7996,634.875,276.7996,630.875,280.7996" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="630.875" x2="630.875" y1="131.1997" y2="157.5997"/><polygon fill="#383838" points="626.875,147.5997,630.875,157.5997,634.875,147.5997,630.875,151.5997" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="690.375" x2="753.375" y1="119.1997" y2="119.1997"/><polygon fill="#383838" points="749.375,207.3996,753.375,217.3996,757.375,207.3996,753.375,211.3996" style="stroke:#383838;stroke-width:1.5;"/><line style="stroke:#383838;stroke-width:1.5;" x1="753.375" x2="753.375" y1="119.1997" y2="298.7996"/><line style="stroke:#383838;stroke-width:1.5;" x1="753.375" x2="642.875" y1="298.7996" y2="298.7996"/><polygon fill="#383838" points="652.875,294.7996,642.875,298.7996,652.875,302.7996,648.875,298.7996" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="630.875" x2="630.875" y1="66.9998" y2="107.1997"/><polygon fill="#383838" points="626.875,97.1997,630.875,107.1997,634.875,97.1997,630.875,101.1997" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="387" x2="387" y1="613.3992" y2="649.7992"/><polygon fill="#383838" points="383,639.7992,387,649.7992,391,639.7992,387,643.7992" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="387" x2="387" y1="703.399" y2="723.399"/><polygon fill="#383838" points="383,713.399,387,723.399,391,713.399,387,717.399" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="196.25" x2="114.5" y1="514.3994" y2="514.3994"/><line style="stroke:#383838;stroke-width:1.5;" x1="114.5" x2="114.5" y1="514.3994" y2="536.3994"/><polygon fill="#383838" points="110.5,526.3994,114.5,536.3994,118.5,526.3994,114.5,530.3994" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="305.25" x2="387" y1="514.3994" y2="514.3994"/><line style="stroke:#383838;stroke-width:1.5;" x1="387" x2="387" y1="514.3994" y2="576.5993"/><polygon fill="#383838" points="383,566.5993,387,576.5993,391,566.5993,387,570.5993" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="387" x2="387" y1="776.9989" y2="793.9989"/><line style="stroke:#383838;stroke-width:1.5;" x1="387" x2="250.75" y1="793.9989" y2="793.9989"/><line style="stroke:#383838;stroke-width:1.5;" x1="250.75" x2="250.75" y1="793.9989" y2="808.9989"/><polygon fill="#383838" points="246.75,798.9989,250.75,808.9989,254.75,798.9989,250.75,802.9989" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="250.75" x2="250.75" y1="475.9995" y2="502.3994"/><polygon fill="#383838" points="246.75,492.3994,250.75,502.3994,254.75,492.3994,250.75,496.3994" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="343.75" x2="854" y1="463.9995" y2="463.9995"/><polygon fill="#383838" points="850,649.1992,854,659.1992,858,649.1992,854,653.1992" style="stroke:#383838;stroke-width:1.5;"/><line style="stroke:#383838;stroke-width:1.5;" x1="854" x2="854" y1="463.9995" y2="820.9989"/><line style="stroke:#383838;stroke-width:1.5;" x1="854" x2="262.75" y1="820.9989" y2="820.9989"/><polygon fill="#383838" points="272.75,816.9989,262.75,820.9989,272.75,824.9989,268.75,820.9989" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="556.875" x2="250.75" y1="393.1995" y2="393.1995"/><line style="stroke:#383838;stroke-width:1.5;" x1="250.75" x2="250.75" y1="393.1995" y2="451.9995"/><polygon fill="#383838" points="246.75,441.9995,250.75,451.9995,254.75,441.9995,250.75,445.9995" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="704.875" x2="1011" y1="393.1995" y2="393.1995"/><line style="stroke:#383838;stroke-width:1.5;" x1="1011" x2="1011" y1="393.1995" y2="415.1995"/><polygon fill="#383838" points="1007,405.1995,1011,415.1995,1015,405.1995,1011,409.1995" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="250.75" x2="250.75" y1="832.9989" y2="849.9989"/><line style="stroke:#383838;stroke-width:1.5;" x1="250.75" x2="630.875" y1="849.9989" y2="849.9989"/><line style="stroke:#383838;stroke-width:1.5;" x1="630.875" x2="630.875" y1="849.9989" y2="864.9989"/><polygon fill="#383838" points="626.875,854.9989,630.875,864.9989,634.875,854.9989,630.875,858.9989" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="630.875" x2="630.875" y1="354.7996" y2="381.1995"/><polygon fill="#383838" points="626.875,371.1995,630.875,381.1995,634.875,371.1995,630.875,375.1995" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="723.875" x2="1140" y1="342.7996" y2="342.7996"/><polygon fill="#383838" points="1136,626.7992,1140,636.7992,1144,626.7992,1140,630.7992" style="stroke:#383838;stroke-width:1.5;"/><line style="stroke:#383838;stroke-width:1.5;" x1="1140" x2="1140" y1="342.7996" y2="876.9989"/><line style="stroke:#383838;stroke-width:1.5;" x1="1140" x2="642.875" y1="876.9989" y2="876.9989"/><polygon fill="#383838" points="652.875,872.9989,642.875,876.9989,652.875,880.9989,648.875,876.9989" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="630.875" x2="630.875" y1="310.7996" y2="330.7996"/><polygon fill="#383838" points="626.875,320.7996,630.875,330.7996,634.875,320.7996,630.875,324.7996" style="stroke:#383838;stroke-width:1.0;"/><line style="stroke:#383838;stroke-width:1.5;" x1="630.875" x2="630.875" y1="888.9989" y2="908.9989"/><polygon fill="#383838" points="626.875,898.9989,630.875,908.9989,634.875,898.9989,630.875,902.9989" style="stroke:#383838;stroke-width:1.0;"/><!--MD5=[a968c340e51a7ad2e2ae0fcf7de8675d]
@startuml
' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
skinparam monochrome true
skinparam shadowing true
skinparam DefaultFontName "Roboto,sans-serif"
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
' https://material.io/design/typography/the-type-system.html
' Body 2
skinparam DefaultFontSize 14
skinparam DefaultTextAlignment center
skinparam NoteTextAlignment left
' default 1.5
skinparam ActivityBorderThickness 1
' default 2
skinparam PartitionBorderThickness 1.5
:getService;
note right
In any thread.
Get on demand only.
Do not cache result.
Do not request in constructor unless needed.
end note
if (Is Light Service) then (yes)
else (no)
if (Is Service Declaration Found) then (yes)
else (no)
:Return ""null"";
detach
endif
endif
if (Is Created and Initialized?) then (yes)
else (no)
if (Is Container Active?) then (active)
partition "synchronized on service class" {
if (Is Created and Initialized?) then (yes)
else (no)
if (Is Initializing?) then (yes)
:Throw ""PluginException""
Cyclic Service Initialization;
detach
else (no)
partition "non cancelable" {
:Create Instance]
note right
Avoid getting other services to reduce initialization tree.
As less dependencies, as more faster and reliable.
end note
:Register to be Disposed on Container Dispose
if Implements ""Disposable""]
:Load Persistent State
if Implements ""PersistentStateComponent""]
}
endif
endif
}
else (disposed or dispose in progress)
:Throw ""ProcessCanceledException"";
detach
endif
endif
:Return Instance;
@enduml
@startuml
skinparam monochrome true
skinparam shadowing true
skinparam DefaultFontName "Roboto,sans-serif"
skinparam DefaultMonospacedFontName "Roboto Mono,monospace"
skinparam DefaultFontSize 14
skinparam DefaultTextAlignment center
skinparam NoteTextAlignment left
skinparam ActivityBorderThickness 1
skinparam PartitionBorderThickness 1.5
:getService;
note right
In any thread.
Get on demand only.
Do not cache result.
Do not request in constructor unless needed.
end note
if (Is Light Service) then (yes)
else (no)
if (Is Service Declaration Found) then (yes)
else (no)
:Return ""null"";
detach
endif
endif
if (Is Created and Initialized?) then (yes)
else (no)
if (Is Container Active?) then (active)
partition "synchronized on service class" {
if (Is Created and Initialized?) then (yes)
else (no)
if (Is Initializing?) then (yes)
:Throw ""PluginException""
Cyclic Service Initialization;
detach
else (no)
partition "non cancelable" {
:Create Instance]
note right
Avoid getting other services to reduce initialization tree.
As less dependencies, as more faster and reliable.
end note
:Register to be Disposed on Container Dispose
if Implements ""Disposable""]
:Load Persistent State
if Implements ""PersistentStateComponent""]
}
endif
endif
}
else (disposed or dispose in progress)
:Throw ""ProcessCanceledException"";
detach
endif
endif
:Return Instance;
@enduml
PlantUML version 1.2021.8(Sat Jun 26 08:20:59 GMT 2021)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>