рд╣рдо Intellij IDEA рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рдЕрд╕рдорд╛рди рд▓рдбрд╝рд╛рдИ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдкрд┐рдЫрд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣рд╛рдБ рд╣реИ ред
рдкреНрд▓рдЧрдЗрди рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓
рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рд╕рд╛рде рд╣реА рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдФрд░ рдЬрд╛рдирдХрд╛рд░реА plugin.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред
рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрддреНрд╡ рдореМрдЬреВрдж рд╣реИрдВред
<idea-plugin url="http://www.jetbrains.com/idea"> <name>VssIntegration</name> <id>VssIntegration</id> <description>Vss integration plugin</description> <change-notes>Initial release of the plugin.</change-notes> <version>1.0</version> <vendor url="http://www.jetbrains.com" email="support@jetbrains.com" logo="icons/plugin.png">Foo Inc.</vendor> <depends>MyFirstPlugin</depends> <depends optional="true" config-file="mysecondplugin.xml">MySecondPlugin</depends> <helpset file="myhelp.jar" path="/Help.hs" /> <idea-version since-build="3000" until-build="3999"/> <resource-bundle>messages.MyPluginBundle</resource-bundle> <application-components> <component> <interface-class>com.foo.Component1Interface</interface-class> <implementation-class>com.foo.impl.Component1Impl</implementation-class> </component> </application-components> <project-components> <component> <interface-class>com.foo.Component2</interface-class> <option name="workspace" value="true" /> <loadForDefaultProject> </component> </project-components> <module-components> <component> <interface-class>com.foo.Component3</interface-class> </component> </module-components> <actions> <action id="VssIntegration.GarbageCollection" class="com.foo.impl.CollectGarbage" text="Collect _Garbage" description="Run garbage collector"> <keyboard-shortcut first-keystroke="control alt G" second-keystroke="C" keymap="$default"/> </action> </actions> <extensionPoints> <extensionPoint name="testExtensionPoint" beanClass="com.foo.impl.MyExtensionBean"/> </extensionPoints> <extensions xmlns="VssIntegration"> <testExtensionPoint implementation="com.foo.impl.MyExtensionImpl"/> </extensions> </idea-plugin>
рдХреНрд░рд┐рдпрд╛ рдХрд░рдирд╛ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛
рдПрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЗрдиреВ рдЖрдЗрдЯрдо рдФрд░ рдЖрдИрдбрд┐рдпрд╛ рдЯреВрд▓рдмрд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдПрдХреНрд╢рди рдПрдирд╛рдПрд╢рди рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдПрдХреНрд╢рдирдкрд░реНрдлрд╝рд░реНрдб () рд╡рд┐рдзрд┐ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдореЗрдиреВ рдЖрдЗрдЯрдо рдпрд╛ рдЙрд╕рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯреВрд▓рдмрд╛рд░ рдмрдЯрди рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдПрдХреНрд╢рди рдХреНрд▓рд╛рд╕ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ "рдлрд╛рдЗрд▓ | рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ ... "рдФрд░ рдЯреВрд▓рдмрд╛рд░ рдкрд░" рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ "рдмрдЯрдиред
рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдЙрдкрд╕рдореВрд╣реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рдХреНрд░рд┐рдпрд╛ рдпрд╛ рд╕рдореВрд╣ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реМрдВрдкрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдирдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╡рд░реНрдЧ com.intellij.openapi.actionSystem.IdeActions рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдХрдИ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реЗ рд╕реНрдерд╛рди рдЬрд╣рд╛рдБ рдХреНрд░рд┐рдпрд╛рдПрдБ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, ActionPlaces рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЙрд╕реА рдкреИрдХреЗрдЬ рд╕реЗ) рдореЗрдВ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдкреНрд░рд╕реНрддреБрддрд┐ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкрд╛рда рдпрд╛ рдЖрдЗрдХрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред AnAction.getTemplatePresentation () рд╡рд┐рдзрд┐ рд╕реЗ рд╡рд╛рдкрд╕реА рдорд╛рди рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдХрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрднреНрдпрд╛рд╡реЗрджрди рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдХрд┐рд╕реА рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, AnAction.update () рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред AnActionEvent рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╢реНрдп рдЬрд┐рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
IDE рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдЪрдпрдирд┐рдд рдлрд╝рд╛рдЗрд▓, рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЪрдпрдирд┐рдд рдкрд╛рда, рдЖрджрд┐, AnActionEvent.getData () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХреГрдд рд╡рд┐рднрд┐рдиреНрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдбреЗрдЯрд╛рдХреЗрдп рд╡рд░реНрдЧ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рдХрд╛рд░ AnActionEvent рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рдПрдХреНрд╢рдирдкреЗрд░рдлреЙрд░реНрдо () рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИред
рдПрдХреНрд╢рди рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ
рдХрд┐рд╕реА рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: plugin.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдШрдЯрдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЪрд░рдг рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдХреЗред
рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
<actions> <action id="VssIntegration.GarbageCollection" class="com.foo.impl.CollectGarbage" text="Collect _Garbage" description="Run garbage collector" icon="icons/garbage.png"> <add-to-group group-id="ToolsMenu" relative-to-action="GenerateJavadoc" anchor="after"/> <keyboard-shortcut first-keystroke="control alt G" second-keystroke="C" keymap="$default"/> <mouse-shortcut keystroke="control button3 doubleClick" keymap="$default"/> </action> <group class="com.foo.impl.MyActionGroup" id="TestActionGroup" text="Test Group" description="Group with test actions" icon="icons/testgroup.png" popup="true"> <action id="VssIntegration.TestAction" class="com.foo.impl.TestAction" text="My Test Action" description="My test action"/> <separator/> <group id="TestActionGroup"/> <reference ref="EditorCopy"/> <add-to-group group-id="MainMenu" relative-to-action="HelpMenu" anchor="before"/> </group> </actions>
рдЬрд╛рд╡рд╛ рдХреЛрдб рд╕реЗ рд╕реАрдзреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЛ рдЪрд░рдгреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП AnAction рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг ActionManager.registerAction () рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рдореВрд╣ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ActionManager.getAction () рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ DefaultAAgGroup рдЯрд╛рдЗрдк рдХрд░реЗрдВред
IDEA рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
- рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬреЛ ApplicationComponent рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ;
- getComponentName, initComponent, рдФрд░ disComComponent рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ;
- plugin.xml рдлрд╝рд╛рдЗрд▓ рдХреЗ
<application-components>
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХрдХреНрд╖рд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред
public class MyPluginRegistration implements ApplicationComponent {
рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдирд╛
рдпрджрд┐ рдкреНрд▓рдЧрдЗрди рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдЯреВрд▓рдмрд╛рд░ рдпрд╛ рдкреЙрдк-рдЕрдк рдореЗрдиреВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ ActionPopupMenu рдФрд░ ActionToolbar рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдирдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ ActionManager.createActionPopupMenu () рдФрд░ ActionManager.createActionToolbar () рд╡рд┐рдзрд┐ рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдХреНрд░рд┐рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреИрдирд▓) рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЖрдорддреМрд░ рдкрд░ ActionToolbar.setTargetComponent () рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдШрдЯрдХ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЯреВрд▓рдмрд╛рд░ рдмрдЯрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рди рдХрд┐ рдЖрдИрдбреАрдИ рдлреНрд░реЗрдо рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдкрд░ред
рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрд░рдХреНрд╖рдг
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП рдПрдХ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдИрдбреАрдИ рд▓реЙрдиреНрдЪ рдХреЗ рдмреАрдЪ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХреЛрдВ рдпрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк PersistentStateComponent рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕рдордЧреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рджреЛрдиреЛрдВ рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд░рд▓ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PropertiesComponent рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдХреБрдЫ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ com.intellij.ide.util.PropertiesComponent рд╕реЗрд╡рд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрддрд░ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрддрд░ (рдбреЗрдЯрд╛ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ) рджреЛрдиреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
PropertiesComponent.getInstance () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрддрд░ рдорд╛рдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ PropertiesComponent.getInstance (рдкреНрд░реЛрдЬреЗрдХреНрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрддрд░ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
PersistentStateComponent Interface рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
PersistentStateComponent рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдпреЛрдВ, рдЙрдирдХреЗ рдкреНрд░рд╛рд░реВрдк рдФрд░ рднрдВрдбрд╛рд░рдг рд╕реНрдерд╛рди рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реЗрд╡рд╛ рдпрд╛ рдШрдЯрдХ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рдФрд░
@State
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрдВрдбрд╛рд░рдг рд╕реНрдерд╛рди рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ PersistentStateComponent рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрдирд╛рдП рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдВред
PersistentStateComponent рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рд░рд╛рдЬреНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд░рд╛рдЬреНрдп рд╡рд░реНрдЧ рдПрдХ рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛рдмреАрди рд╡рд░реНрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдкрд░ PersistentStateComponent рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░рд╛рдЬреНрдп рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрдорддреМрд░ рдкрд░ рдШрдЯрдХ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
class MyService implements PersistentStateComponent<MyService.State> { class State { public String value; } State myState; public State getState() { return myState; } public void loadState(State state) { myState = state; } }
рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
class MyService implements PersistentStateComponent<MyService> { public String stateValue; public MyService getState() { return this; } public void loadState(MyService state) { XmlSerializerUtil.copyBean(state, this); } }
рд░рд╛рдЬреНрдп рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реЗрдо рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝реАрд▓реНрдб рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ XML рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдкреВрд░реНрдгрд╛рдВрдХ рдФрд░ рднрд┐рдиреНрдирд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛;
- рдмреВрд▓рд┐рдпрди рдорд╛рди;
- рд▓рд╛рдЗрди;
- рд╕рдВрдЧреНрд░рд╣;
- рд╢рдмреНрджрдХреЛрд╢реЛрдВ;
- рд▓рд┐рд╕реНрдЯрд┐рдВрдЧред
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ
@Transient
рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рд░рд╛рдЬреНрдп рд╡рд░реНрдЧ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ (XML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдХреНрд╖рд╛ рдХреЛ рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ)ред
рднрдВрдбрд╛рд░рдг рд╕реНрдерд╛рди
рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╣рд╛рдБ рд╕рд╣реЗрдЬрдирд╛ рд╣реИ, рдЖрдкрдХреЛ рдШрдЯрдХ рд╡рд░реНрдЧ рдореЗрдВ
@State
рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реАрд▓реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреА рд╣реЛрдВрдЧреА:
- "рдирд╛рдо" (рдЖрд╡рд╢реНрдпрдХ) - рд░рд╛рдЬреНрдп рдХрд╛ рдирд╛рдо (рд░реВрдЯ рдЯреИрдЧ рдХрд╛ рдирд╛рдо) рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ;
- рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ
@Storage
рдПрдиреЛрдЯреЗрд╢рди (рдЖрд╡рд╢реНрдпрдХ) - * .ipr рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рднрдВрдбрд╛рд░рдг рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ; - "рд░реЛрдорд┐рдВрдЧ рдЯрд╛рдЗрдк" - рд░реЛрдорд┐рдВрдЧ рдХрд╛ рдкреНрд░рдХрд╛рд░ (рд╡реИрдХрд▓реНрдкрд┐рдХ) - рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд░рд╛рдЬреНрдп рд╡рд┐рднрд┐рдиреНрди рдЖрдИрдбреАрдИрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВ;
- "рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп" (рд╡реИрдХрд▓реНрдкрд┐рдХ) - рдпрджрд┐ рдЧрд▓рдд рд╣реИ, рддреЛ рдмрджрд▓реЗ рд╣реБрдП рд╕реНрдерд┐рддрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдкреБрдирд░рд╛рд░рдВрдн рдЖрд╡рд╢реНрдпрдХ рд╣реИред
@Storage
рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
@Storage(id="other", file = StoragePathMacros.APP_CONFIG + "/other.xml")
- рдЖрд╡реЗрджрди рд╕реНрддрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП;@Storage(id="other", file = StoragePathMacros.PROJECT_FILE)
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝рд╛рдЗрд▓ ( @Storage(id="other", file = StoragePathMacros.PROJECT_FILE)
рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП;@Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR + "/other.xml", scheme = StorageScheme.DIRECTORY_BASED)})
- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП;@Storage(id="other", file = StoragePathMacros.WORKSPACE_FILE)
- рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдПред
@Storage
рдПрдиреЛрдЯреЗрд╢рди рдХреЗ "рдЖрдИрдбреА"
@Storage
рдЙрдкрдпреЛрдЧ рдлрд╝реАрд▓реНрдб рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреНрд░рдорд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рдордирдорд╛рдирд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдорд╛рдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
@Storage
рдмрд░рд╛рдмрд░ "рд╕реНрдХреАрдо" рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛
@Storage
рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
@State( name = "AntConfiguration", storages = { @Storage(id = "default", file = StoragePathMacros.PROJECT_FILE), @Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR + "/ant.xml", scheme = StorageScheme.DIRECTORY_BASED) } )
XML рдкреНрд░рд╛рд░реВрдк рд╕реЗрдЯрд┐рдВрдЧ
рдпрджрд┐ рдЬрд╛рд░реА рд░рд╛рдЬреНрдп рд╕рд░рд▓ рдЬрд╛рд╡рд╛рдмреАрди рдХреЗ рд▓рд┐рдП рдореИрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд░рд╛рдЬреНрдп рд╡рд░реНрдЧ рдХреЛ org.jdom.Element рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЧреЗрдЯрд╕реНрдЯреНрд░реЗрдЯ () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдордирдорд╛рдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдПрдордПрд▓ рддрддреНрд╡ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЛрдбрд╕реНрдЯреЗрдЯ () рд╡рд┐рдзрд┐ рдореЗрдВ, JDOM рддрддреНрд╡ рдХреЛ рдбрд┐рд╕реЗрд░реНрдмрд▓рд╛рдЗрдЬ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдмреАрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдорд╛рдирдХ рдХреНрд░рдорд╛рдВрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд╕реНрдЯрдо рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рдЖрдк рдПрдиреЛрдЯреЗрд╢рди
@Tag, @Attribute, @Property, @MapAnnotation, @AbstractCollection
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ: рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛, VFSред
рдЪрдХреНрд░ рдХреЗ рд╕рднреА рд▓реЗрдЦ: 1 , 2 , 3 , 4 , 5 , 6 , 7 ред