Repository navigation
Expand file tree
/
Copy pathplugin.xml
More file actions
266 lines (245 loc) · 16.1 KB
/
Copy pathplugin.xml
File metadata and controls
266 lines (245 loc) · 16.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->
<idea-plugin>
<!-- Unique identifier of the plugin. It should be FQN. It cannot be changed between the plugin versions. -->
<id>com.zhanglinwei.zTools</id>
<version>1.5.3</version>
<!-- Public plugin name should be written in Title Case.
Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-name -->
<name>zTools</name>
<!-- A displayed Vendor name or Organization ID displayed on the Plugins Page. -->
<vendor email="3498729975@qq.com" url="https://www.codefy.cn/">Zhang Linwei</vendor>
<!-- Description of the plugin displayed on the Plugin Page and IDE Plugin Manager.
Simple HTML elements (text formatting, paragraphs, and lists) can be added inside of <![CDATA[ ]]> tag.
Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-description -->
<description>
<![CDATA[
<p>A Java / Spring toolbox: API docs, JSON / cURL from source, Restful navigation, YApi upload, Jasypt encrypt/decrypt, database docs, inner Builder generation, and convert method body fill.</p>
<p>面向 Java / Spring 的开发工具:生成接口文档、类转 JSON、Restful 跳转、复制 cURL、上传 YApi、Jasypt 加解密、库表文档、内部 Builder、填充 Bean 转换方法体。</p>
<p><b>Minimum supported IDEA version: 2022.1.1</b> (Java plugin required)</p>
<p>Documentation:</p>
<ul>
<li><a href="https://github.com/zhanglinweigithub/zTools/blob/main/README.md">GitHub README</a></li>
<li><a href="https://gitee.com/linwei-zhang/z-tools/blob/master/README.md">Gitee README</a></li>
</ul>
<p>Features:</p>
<ul>
<li><b>API documentation</b> — Generate Html / MarkDown / Word from Spring Controllers (OpenAPI / Swagger / validation / JavaDoc). 从 Controller 生成 Html、MarkDown、Word 接口文档。</li>
<li><b>Copy JSON</b> — Class to commented example JSON (nesting, generics, inheritance, enums). 类转带注释的示例 JSON。</li>
<li><b>Copy cURL</b> — Mapping method to a runnable curl (port and context-path from application.*). Mapping 方法复制为可执行 curl。</li>
<li><b>Go to Restful</b> — Search Spring MVC / Feign APIs by path, shortcut Ctrl+\. 按路径搜索并跳转接口。</li>
<li><b>Upload YApi</b> — Push one method or a whole Controller / Feign type to YApi. 上传接口到 YApi。</li>
<li><b>Jasypt Crypto</b> — Encrypt / decrypt ENC(...) in the editor; decrypt a whole file. 编辑器内 Jasypt 加解密,支持整文件解密。</li>
<li><b>Database documentation</b> — MySQL table docs (Html / MarkDown / Word) from zTools.yaml. 从 zTools.yaml 读数据源生成库表文档。</li>
<li><b>Inner Builder</b> — Generate Builder (lite or generic, record, inheritance). 生成内部 Builder 类。</li>
<li><b>Fill convert body</b> — Alt+Enter on a DTO/DO convert method to fill getters/setters or builder(). 在转换方法上 Alt+Enter 填充 getter/setter 或 Builder 方法体。</li>
</ul>
<p>Configure under <b>Settings → z-tools</b> (project-level, stored in .idea/zTools.xml).</p>
]]>
</description>
<change-notes>
<![CDATA[
<em>2026.10.17</em><br>
<ul>
<li>fix: drop SwingX JXTextField / PromptSupport so the plugin no longer depends on org.jdesktop (removed from newer IDEA) | 设置页改用 JBTextField,不再依赖已从高版本 IDEA 移除的 org.jdesktop</li>
<li>fix: Restful jump uses PsiNavigateUtil instead of calling OverrideOnly Navigatable.navigate | Restful 跳转改为 PsiNavigateUtil,避免调用只能重写的 Navigatable.navigate</li>
</ul>
<em>2026.10.13</em><br>
<ul>
<li>feat: YApi body format option — JSON string or schema tree for request/response | YApi 可选择请求/响应体以 JSON 字符串或结构树上传</li>
<li>fix: YApi desc indents annotations with the method signature when there is no JavaDoc | 修复无方法注释时 YApi desc 注解与 public 不对齐</li>
</ul>
<em>2026.09.27</em><br>
<ul>
<li>feat: fill convert method body with Target.builder()...build() (Alt+Enter) | 转换方法可用 Builder 链式填充方法体</li>
</ul>
<em>2026.09.25</em><br>
<ul>
<li>feat: Mono expands as object, Flux as array, JSON comment 流式对象; SseEmitter example [{}] | Mono 按对象、Flux 按数组展开并标注流式对象;SseEmitter 示例为 [{}]</li>
<li>fix: YApi desc HTML-escapes generic signatures (Mono<RestResult<Object>> no longer renders as public Mono>) | 修复 YApi 接口描述里泛型被 HTML 吃掉</li>
</ul>
<em>2026.09.16</em><br>
<ul>
<li>feat: Optional unwraps to its type argument in example JSON (raw Optional / Optional<?> → null) | Optional 按泛型生成示例 JSON,裸 Optional 为 null</li>
<li>feat: Map family with <K,V> emits a "key" example instead of {} (nested Map and Optional<Map> supported) | Map 家族按值类型生成 "key" 示例,不再是空对象;支持嵌套 Map 与 Optional<Map></li>
<li>fix: nested type variables (e.g. PageResult<T> / List<T>) expand in Copy JSON, Api Doc, cURL, YApi | 修复嵌套泛型未替换导致 JSON 为 [""] 等问题</li>
</ul>
<em>2026.09.13</em><br>
<ul>
<li>feat: Alt+Enter fill JavaBean convert method body from param to return type | 转换方法 Alt+Enter 按入参/返回类型填充 getter/setter 方法体</li>
</ul>
<em>2026.09.11</em><br>
<ul>
<li>fix bug | 修复了一些已知问题</li>
</ul>
<em>2026.09.10</em><br>
<ul>
<li>fix: Restful search popup on newer IDEA (filter, prefix dropdown, click-outside close) | 修复高版本 IDEA 中 Restful 搜索弹窗:HTTP 方法过滤、前缀下拉与点外部关闭</li>
</ul>
<em>2026.09.05</em><br>
<ul>
<li>feat: upload interfaces to YApi (method or class, Spring Mapping / Feign RequestLine) | 支持将接口上传到 YApi</li>
<li>feat: Jasypt PBE encrypt / decrypt in editor (ENC wrapper, multi-password, decrypt file) | 编辑器内 Jasypt 加解密,支持整文件解密与多密码</li>
<li>feat: project Settings page (document / Jasypt / YApi), persisted to .idea/zTools.xml | 项目设置页写入 zTools.xml</li>
<li>feat: API doc void responses omitted; path/query required defaults; enum and numeric examples; Markdown tables | 接口文档:void 不展示响应、Path/Query 默认必填、枚举与数字示例、Markdown 表格</li>
<li>feat: Copy JSON uses first enum constant | Copy JSON 枚举取第一个常量</li>
</ul>
<em>2026.03.16</em><br>
<ul>
<li>feat: database datasource is read from zTools.yaml / yml / properties | 库表文档数据源从 zTools 配置文件读取</li>
</ul>
<em>2026.03.15</em><br>
<ul>
<li>feat: inner builder support extend | 内部 Builder 类支持继承</li>
</ul>
<em>2026.02.08</em><br>
<ul>
<li>feat: Generate an inner builder class | 生成内部 Builder 类</li>
</ul>
<em>2025.07.10</em><br>
<ul>
<li>fix bug: Handle the MultipartFile separately | 单独处理 MultipartFile 类型</li>
<li>fix bug: Unannotated parameters are defaulted to RequestParam | 无注解参数默认按 RequestParam 处理</li>
<li>fix bug: cURL Identify the global request prefix | cURL 识别全局请求前缀</li>
</ul>
<em>2025.07.02</em><br>
<ul>
<li>feat: Added request prefix for Api documents | API文档增加请求前缀</li>
<li>fix bug: Html Font | 修改 HTML 字体</li>
<li>fix bug: Chinese garbled code | 修复中文乱码(UTF-8)</li>
</ul>
<em>2025.06.28</em><br>
<ul>
<li>feat: restful to curl | RestFul 接口复制为 CURL</li>
<li>feat: generate db doc | 生成数据库文档</li>
<li>fix bug | 修复了一些已知问题</li>
</ul>
<em>2025.06.25</em><br>
<ul>
<li>feat: restful support global request prefix | RestFul 接口搜索支持全局请求前缀</li>
<li>fix bug | 修复了一些已知问题</li>
</ul>
<em>2025.06.24</em><br>
<ul>
<li>fix bug | 修复了一些已知问题</li>
</ul>
<em>2025.06.23</em><br>
<ul>
<li>fix bug | 修复了一些已知问题</li>
</ul>
<em>2025.06.16</em><br>
<ul>
<li>fix bug | 修复了一些已知问题</li>
</ul>
<em>2025.06.13</em><br>
<ul>
<li>fix bug | 修复了一些已知问题</li>
</ul>
<em>2025.06.11</em><br>
<ul>
<li>fix bug | 修复了一些已知问题</li>
<li>feat: add restful search | 新增 RestFul 接口搜索功能</li>
</ul>
<em>2025.01.18</em><br>
<ul>
<li>fix bug | 修复了一些已知问题</li>
</ul>
<em>1.0-RELEASE</em><br>
<ul>
<li>The first version | 第一个版本</li>
</ul>
]]>
</change-notes>
<idea-version since-build="221.0"/>
<!-- Product and plugin compatibility requirements.
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
<depends>com.intellij.modules.platform</depends>
<depends>com.intellij.modules.java</depends>
<!-- <depends>com.intellij.database</depends>-->
<!-- Extension points defined by the plugin.
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
<extensions defaultExtensionNs="com.intellij">
<notificationGroup id="com.zhanglinwei.zTools.NotificationGroup"
displayType="BALLOON"
key="com.zhanglinwei.zTools.util.NotificationGroup"/>
<projectConfigurable id="zTools"
instance="com.zhanglinwei.zTools.configure.settings.ZToolsConfigSettings"
displayName="z-tools"/>
<projectService serviceImplementation="com.zhanglinwei.zTools.configure.config.DocumentConfig"/>
<projectService serviceImplementation="com.zhanglinwei.zTools.configure.config.JasyptCryptoConfig"/>
<projectService serviceImplementation="com.zhanglinwei.zTools.configure.config.YApiConfig"/>
<projectService serviceImplementation="com.zhanglinwei.zTools.configure.config.RestfulConfig"/>
<intentionAction>
<className>com.zhanglinwei.zTools.convert.FillConvertMethodIntention</className>
<category>zTools</category>
<descriptionDirectoryName>FillConvertMethodIntention</descriptionDirectoryName>
</intentionAction>
<intentionAction>
<className>com.zhanglinwei.zTools.convert.FillConvertMethodByBuilderIntention</className>
<category>zTools</category>
<descriptionDirectoryName>FillConvertMethodByBuilderIntention</descriptionDirectoryName>
</intentionAction>
<!--
secondary 是否次要窗口: 次要窗口不会在 IDE 启动时自动显示,需用户手动打开
canCloseContents 内容关闭控制: 禁止用户关闭工具窗口的内容区域(但窗口本身仍可通过 IDE 操作隐藏),常用于核心功能窗口以避免误操作
doNotActivateOnStart 启动激活: IDE 启动时自动激活该工具窗口
-->
<!-- <toolWindow id="zTools"-->
<!-- factoryClass="com.zhanglinwei.zTools.tools.ZToolsToolWindowFactory"-->
<!-- anchor="right" secondary="false" canCloseContents="false" doNotActivateOnStart="false"-->
<!-- icon="/icons/pluginIcon.svg"/>-->
</extensions>
<!-- icon (only supports AllIcons.*): https://intellij-icons.jetbrains.design/ -->
<actions>
<!-- 生成数据库文档 -->
<action id="generate-db-doc.ID" class="com.zhanglinwei.zTools.dbdoc.GenerateDatabaseDocumentAction" text="Generate DB Doc">
<add-to-group group-id="ToolsBasicGroup" anchor="first"/>
</action>
<!-- 搜索 Restful 接口 -->
<action id="go-to-restful.ID" class="com.zhanglinwei.zTools.restful.GoToRestfulAction" >
<keyboard-shortcut keymap="$default" first-keystroke="ctrl BACK_SLASH"/>
</action>
<!-- 生成 Builder -->
<action id="generate-builder.ID" class="com.zhanglinwei.zTools.generatebuilder.GenerateBuilderAction" text="Builder">
<add-to-group group-id="JavaGenerateGroup1" anchor="after" relative-to-action="GenerateGetterAndSetter"/>
</action>
<!-- 拷贝JSON -->
<action id="copy-json.ID" class="com.zhanglinwei.zTools.copyjson.CopyJsonAction"
text="Copy Json">
<add-to-group group-id="EditorLangPopupMenu" anchor="first"/>
</action>
<!-- 拷贝CURL -->
<action id="copy-curl.ID" class="com.zhanglinwei.zTools.copycurl.CopyCurlAction" text="Copy CURL">
<add-to-group group-id="EditorLangPopupMenu" anchor="after" relative-to-action="copy-json.ID"/>
</action>
<!-- 生成API文档 -->
<action id="generate-api-doc.ID" class="com.zhanglinwei.zTools.apidoc.GenerateApiDocAction"
text="Generate Api Doc">
<add-to-group group-id="EditorLangPopupMenu" anchor="after" relative-to-action="copy-curl.ID"/>
</action>
<!-- 上传至 YApi -->
<action id="upload-to-yapi.ID" class="com.zhanglinwei.zTools.yapi.UploadToYApiAction" text="Upload YApi">
<add-to-group group-id="EditorLangPopupMenu" anchor="after" relative-to-action="generate-api-doc.ID"/>
</action>
<!-- 数据加解密操作组 -->
<group id="JasyptCryptoGroup.ID" text="Jasypt Crypto" popup="true">
<add-to-group group-id="EditorLangPopupMenu" anchor="after" relative-to-action="upload-to-yapi.ID" />
<!-- 加密数据 -->
<action id="encrypt.ID" class="com.zhanglinwei.zTools.jasyptcrypto.EncryptAction"
text="Encrypt"/>
<!-- 解密数据 -->
<action id="decrypt.ID" class="com.zhanglinwei.zTools.jasyptcrypto.DecryptAction"
text="Decrypt"/>
<!-- 解密数据至剪贴板 -->
<action id="decrypt-to-clipboard.ID" class="com.zhanglinwei.zTools.jasyptcrypto.Decrypt2ClipboardAction"
text="Decrypt To Clipboard" />
<!-- 解密文件内所有加密数据 -->
<action id="decrypt-file.ID" class="com.zhanglinwei.zTools.jasyptcrypto.DecryptFileAction"
text="Decrypt File" />
</group>
<!-- 测试:拷贝注解模块解析出的类 / 方法定义 JSON -->
<!-- <action id="copy-annotation-json.ID" icon="/json/object.svg" class="com.zhanglinwei.zTools.annotation.CopyAnnotationJsonAction"-->
<!-- text="Copy Annotation Json">-->
<!-- <add-to-group group-id="EditorLangPopupMenu" anchor="after" relative-to-action="copy-curl.ID"/>-->
<!-- </action>-->
</actions>
</idea-plugin>