mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-30 18:27:49 +08:00
150 lines
22 KiB
XML
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&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=""Roboto Mono,monospace"" 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=""Roboto Mono,monospace"" 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=""Roboto Mono,monospace"" 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=""Roboto Mono,monospace"" 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=""Roboto Mono,monospace"" 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> |