├── .github ├── dependabot.yml └── workflows │ ├── build.yml │ ├── release.yml │ └── run-ui-tests.yml ├── .gitignore ├── LICENSE ├── README.md ├── build.gradle.kts ├── changeNotes.md ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── img ├── beanCopy1.png ├── beanCopy2.png ├── guide.png ├── install.png ├── request.png └── search.png ├── pluginDescription.md ├── settings.gradle.kts ├── src ├── main │ ├── java │ │ ├── com │ │ │ └── wdf │ │ │ │ └── fudoc │ │ │ │ ├── apidoc │ │ │ │ ├── action │ │ │ │ │ ├── ConfirmSyncFuDocAction.java │ │ │ │ │ ├── GenFuDocAction.java │ │ │ │ │ └── SyncFuDocAction.java │ │ │ │ ├── assemble │ │ │ │ │ ├── AbstractAssembleService.java │ │ │ │ │ ├── AssembleServiceExecutor.java │ │ │ │ │ ├── FuDocAssembleService.java │ │ │ │ │ ├── handler │ │ │ │ │ │ ├── BaseParamFieldValueHandler.java │ │ │ │ │ │ ├── ParamValueExecutor.java │ │ │ │ │ │ ├── ParamValueHandler.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ ├── FuDocDetailInfoValueHandler.java │ │ │ │ │ │ │ ├── FuDocTitleValueHandler.java │ │ │ │ │ │ │ ├── ParamCommentValueHandler.java │ │ │ │ │ │ │ ├── ParamNameValueHandler.java │ │ │ │ │ │ │ ├── ParamRequireValueHandler.java │ │ │ │ │ │ │ └── ParamTypeViewValueHandler.java │ │ │ │ │ └── impl │ │ │ │ │ │ ├── ControllerAssembleService.java │ │ │ │ │ │ ├── FeignAssembleService.java │ │ │ │ │ │ └── InterfaceAssembleService.java │ │ │ │ ├── config │ │ │ │ │ ├── DefaultConfig.java │ │ │ │ │ ├── EnumSettingConfig.java │ │ │ │ │ ├── FreeMarkerConfig.java │ │ │ │ │ ├── configurable │ │ │ │ │ │ ├── FuDocGeneralConfigurable.java │ │ │ │ │ │ ├── FuDocSettingConfigurable.java │ │ │ │ │ │ └── FuDocSyncSettingConfigurable.java │ │ │ │ │ └── state │ │ │ │ │ │ ├── FuDocSecuritySetting.java │ │ │ │ │ │ ├── FuDocSetting.java │ │ │ │ │ │ ├── FuDocSyncProjectSetting.java │ │ │ │ │ │ └── FuDocSyncSetting.java │ │ │ │ ├── constant │ │ │ │ │ ├── AnnotationConstants.java │ │ │ │ │ ├── CommonObjectNames.java │ │ │ │ │ └── enumtype │ │ │ │ │ │ ├── ActionType.java │ │ │ │ │ │ ├── AnnotationValueType.java │ │ │ │ │ │ ├── ApiDocSystem.java │ │ │ │ │ │ ├── ApiSyncStatus.java │ │ │ │ │ │ ├── CommentTagType.java │ │ │ │ │ │ ├── CommonObjectType.java │ │ │ │ │ │ ├── ContentType.java │ │ │ │ │ │ ├── DynamicDataType.java │ │ │ │ │ │ ├── FuDocArrayType.java │ │ │ │ │ │ ├── FuDocObjectType.java │ │ │ │ │ │ ├── HeaderLevel.java │ │ │ │ │ │ ├── HttpCode.java │ │ │ │ │ │ ├── JavaClassType.java │ │ │ │ │ │ ├── MockResultType.java │ │ │ │ │ │ ├── ParamType.java │ │ │ │ │ │ ├── ParamValueType.java │ │ │ │ │ │ ├── RequestParamType.java │ │ │ │ │ │ ├── RequestType.java │ │ │ │ │ │ ├── RootParamType.java │ │ │ │ │ │ ├── SpringParamAnnotation.java │ │ │ │ │ │ ├── ValidMessageType.java │ │ │ │ │ │ └── YesOrNo.java │ │ │ │ ├── data │ │ │ │ │ ├── CustomerSettingData.java │ │ │ │ │ ├── FuDocData.java │ │ │ │ │ ├── FuDocDataContent.java │ │ │ │ │ ├── FuDocRootParamData.java │ │ │ │ │ ├── SettingData.java │ │ │ │ │ ├── SettingDynamicValueData.java │ │ │ │ │ ├── SyncApiConfigData.java │ │ │ │ │ └── TemplateData.java │ │ │ │ ├── factory │ │ │ │ │ ├── FuDocServiceFactory.java │ │ │ │ │ └── ObjectInfoDescFactory.java │ │ │ │ ├── helper │ │ │ │ │ ├── AssembleHelper.java │ │ │ │ │ ├── CustomerValueHelper.java │ │ │ │ │ ├── DocCommentParseHelper.java │ │ │ │ │ ├── EnumParseHelper.java │ │ │ │ │ ├── JsonSchemaHelper.java │ │ │ │ │ └── MockDataHelper.java │ │ │ │ ├── mock │ │ │ │ │ ├── AbstractMockDataService.java │ │ │ │ │ ├── AutoMockDataServiceImpl.java │ │ │ │ │ ├── FuDocObjectJMockData.java │ │ │ │ │ ├── FuDocObjectMock.java │ │ │ │ │ ├── MockDataService.java │ │ │ │ │ ├── bo │ │ │ │ │ │ ├── MockDataBO.java │ │ │ │ │ │ ├── MockJsonDataBO.java │ │ │ │ │ │ └── MockParamDataBO.java │ │ │ │ │ └── real │ │ │ │ │ │ ├── JsonRealDataHandler.java │ │ │ │ │ │ ├── KeyValueRealDataHandler.java │ │ │ │ │ │ └── MockRealData.java │ │ │ │ ├── parse │ │ │ │ │ ├── FuDocClassParser.java │ │ │ │ │ ├── FuDocClassParserImpl.java │ │ │ │ │ ├── ObjectParserExecutor.java │ │ │ │ │ ├── comment │ │ │ │ │ │ ├── AbstractCommentParser.java │ │ │ │ │ │ ├── CommentParser.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── JavaDocCommentParserImpl.java │ │ │ │ │ ├── field │ │ │ │ │ │ ├── AbstractFuDocField.java │ │ │ │ │ │ ├── FuDocCustomerField.java │ │ │ │ │ │ ├── FuDocField.java │ │ │ │ │ │ ├── FuDocPsiClass.java │ │ │ │ │ │ ├── FuDocPsiField.java │ │ │ │ │ │ └── FuDocPsiParameter.java │ │ │ │ │ └── object │ │ │ │ │ │ ├── AbstractApiDocObjectParser.java │ │ │ │ │ │ ├── ApiDocObjectParser.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ ├── FuDocArrayParser.java │ │ │ │ │ │ ├── FuDocCollectionParser.java │ │ │ │ │ │ ├── FuDocCommonObjectParser.java │ │ │ │ │ │ ├── FuDocDefaultParser.java │ │ │ │ │ │ ├── FuDocFilterObjectParser.java │ │ │ │ │ │ ├── FuDocMapParser.java │ │ │ │ │ │ ├── FuDocMultipartFileParser.java │ │ │ │ │ │ ├── FuDocObjectParser.java │ │ │ │ │ │ ├── FuDocPrimitiveParser.java │ │ │ │ │ │ └── FuDocVoidParser.java │ │ │ │ ├── pojo │ │ │ │ │ ├── annotation │ │ │ │ │ │ ├── DefaultAnnotationData.java │ │ │ │ │ │ ├── PathVariableData.java │ │ │ │ │ │ ├── RequestBodyData.java │ │ │ │ │ │ ├── RequestParamData.java │ │ │ │ │ │ └── SpringAnnotationData.java │ │ │ │ │ ├── bo │ │ │ │ │ │ ├── AssembleBO.java │ │ │ │ │ │ ├── CommentLineBO.java │ │ │ │ │ │ ├── EnumParseBO.java │ │ │ │ │ │ ├── FilterFieldBO.java │ │ │ │ │ │ ├── MockDataValueBO.java │ │ │ │ │ │ ├── MockResultBo.java │ │ │ │ │ │ ├── ParseObjectBO.java │ │ │ │ │ │ ├── PsiClassTypeBO.java │ │ │ │ │ │ ├── RootParamBO.java │ │ │ │ │ │ ├── SettingEnumBO.java │ │ │ │ │ │ ├── SettingValidBO.java │ │ │ │ │ │ └── SettingValidMessageBO.java │ │ │ │ │ ├── context │ │ │ │ │ │ └── FuDocContext.java │ │ │ │ │ ├── data │ │ │ │ │ │ ├── AnnotationData.java │ │ │ │ │ │ ├── AnnotationDataMap.java │ │ │ │ │ │ ├── AnnotationValueData.java │ │ │ │ │ │ ├── ApiDocCommentData.java │ │ │ │ │ │ ├── ApiDocData.java │ │ │ │ │ │ ├── ApiDocMethodData.java │ │ │ │ │ │ ├── ApiDocObjectData.java │ │ │ │ │ │ ├── CommentTagData.java │ │ │ │ │ │ ├── CommonItemData.java │ │ │ │ │ │ ├── FuApiDocData.java │ │ │ │ │ │ ├── FuDocEnumData.java │ │ │ │ │ │ ├── FuDocEnumItemData.java │ │ │ │ │ │ ├── FuDocItemData.java │ │ │ │ │ │ ├── FuDocParamData.java │ │ │ │ │ │ ├── ParamRootData.java │ │ │ │ │ │ └── annotation │ │ │ │ │ │ │ ├── AnnotationArrayValueData.java │ │ │ │ │ │ │ ├── AnnotationClassValueData.java │ │ │ │ │ │ │ ├── AnnotationConstantValueData.java │ │ │ │ │ │ │ ├── AnnotationEnumValueData.java │ │ │ │ │ │ │ └── AnnotationNestedValueData.java │ │ │ │ │ └── desc │ │ │ │ │ │ ├── BaseInfoDesc.java │ │ │ │ │ │ ├── ClassInfoDesc.java │ │ │ │ │ │ ├── MethodInfoDesc.java │ │ │ │ │ │ └── ObjectInfoDesc.java │ │ │ │ ├── service │ │ │ │ │ ├── FuDocService.java │ │ │ │ │ ├── GenControllerFuDocServiceImpl.java │ │ │ │ │ ├── GenEnumFuDocServiceImpl.java │ │ │ │ │ ├── GenInterfaceFuDocServiceImpl.java │ │ │ │ │ └── GenObjectFuDocServiceImpl.java │ │ │ │ ├── sync │ │ │ │ │ ├── SyncFuDocExecutor.java │ │ │ │ │ ├── data │ │ │ │ │ │ ├── ApiFoxConfigData.java │ │ │ │ │ │ ├── ApiFoxProjectTableData.java │ │ │ │ │ │ ├── ApiSystemProjectConfigData.java │ │ │ │ │ │ ├── BaseSyncConfigData.java │ │ │ │ │ │ ├── FuDocSyncConfigData.java │ │ │ │ │ │ ├── ShowDocConfigData.java │ │ │ │ │ │ ├── ShowDocProjectTableData.java │ │ │ │ │ │ ├── SyncApiData.java │ │ │ │ │ │ ├── SyncApiRecordData.java │ │ │ │ │ │ ├── SyncApiTableData.java │ │ │ │ │ │ ├── YApiProjectTableData.java │ │ │ │ │ │ ├── YapiConfigData.java │ │ │ │ │ │ └── YapiProjectConfigData.java │ │ │ │ │ ├── dto │ │ │ │ │ │ ├── AddApiCategoryDTO.java │ │ │ │ │ │ ├── ApiCategoryDTO.java │ │ │ │ │ │ ├── ApiFoxDTO.java │ │ │ │ │ │ ├── ApiFoxResult.java │ │ │ │ │ │ ├── ApiGroupDTO.java │ │ │ │ │ │ ├── ApiProjectDTO.java │ │ │ │ │ │ ├── ApiStructureTreeDTO.java │ │ │ │ │ │ ├── ApiTreeKeyDTO.java │ │ │ │ │ │ ├── JsonSchemaProperties.java │ │ │ │ │ │ ├── OpenApiComponents.java │ │ │ │ │ │ ├── OpenApiContentDTO.java │ │ │ │ │ │ ├── OpenApiDTO.java │ │ │ │ │ │ ├── OpenApiItemDTO.java │ │ │ │ │ │ ├── OpenApiParameterItemDTO.java │ │ │ │ │ │ ├── OpenApiRequestBody.java │ │ │ │ │ │ ├── OpenApiResponseDTO.java │ │ │ │ │ │ ├── OpenApiSchema.java │ │ │ │ │ │ ├── ProjectSyncApiRecordData.java │ │ │ │ │ │ ├── ShowDocDTO.java │ │ │ │ │ │ ├── ShowDocResult.java │ │ │ │ │ │ ├── SyncApiResultDTO.java │ │ │ │ │ │ ├── YApiBaseRes.java │ │ │ │ │ │ ├── YApiCreateCategoryDTO.java │ │ │ │ │ │ ├── YApiHeaderDTO.java │ │ │ │ │ │ ├── YApiJsonSchema.java │ │ │ │ │ │ ├── YApiMock.java │ │ │ │ │ │ ├── YApiParamDTO.java │ │ │ │ │ │ ├── YApiProjectInfoDTO.java │ │ │ │ │ │ ├── YApiResultDTO.java │ │ │ │ │ │ └── YApiSaveDTO.java │ │ │ │ │ ├── renderer │ │ │ │ │ │ ├── DisableCellRenderer.java │ │ │ │ │ │ └── SyncStatusCellRenderer.java │ │ │ │ │ ├── service │ │ │ │ │ │ ├── ApiFoxService.java │ │ │ │ │ │ ├── ApiFoxServiceImpl.java │ │ │ │ │ │ ├── ShowDocService.java │ │ │ │ │ │ ├── ShowDocServiceImpl.java │ │ │ │ │ │ ├── YApiService.java │ │ │ │ │ │ └── YApiServiceImpl.java │ │ │ │ │ └── strategy │ │ │ │ │ │ ├── AbstractSyncApiStrategy.java │ │ │ │ │ │ ├── AbstractSyncSingleApiStrategy.java │ │ │ │ │ │ ├── SyncCategory.java │ │ │ │ │ │ ├── SyncFuDocStrategy.java │ │ │ │ │ │ ├── SyncShowDocStrategy.java │ │ │ │ │ │ ├── SyncStrategyFactory.java │ │ │ │ │ │ ├── SyncToApiFoxStrategy.java │ │ │ │ │ │ └── SyncToYApiStrategy.java │ │ │ │ └── view │ │ │ │ │ ├── FuDocGeneralForm.form │ │ │ │ │ ├── FuDocGeneralForm.java │ │ │ │ │ ├── FuDocSettingForm.form │ │ │ │ │ ├── FuDocSettingForm.java │ │ │ │ │ ├── FuDocSyncSettingForm.java │ │ │ │ │ ├── SyncApiRecordView.java │ │ │ │ │ ├── SyncApiView.java │ │ │ │ │ ├── dialog │ │ │ │ │ ├── SyncApiCategoryDialog.form │ │ │ │ │ ├── SyncApiCategoryDialog.java │ │ │ │ │ └── SyncApiConfirmDialog.java │ │ │ │ │ └── tab │ │ │ │ │ ├── ApiFoxSettingTab.form │ │ │ │ │ ├── ApiFoxSettingTab.java │ │ │ │ │ ├── ShowDocSettingTab.form │ │ │ │ │ ├── ShowDocSettingTab.java │ │ │ │ │ ├── SyncApiSelectTab.form │ │ │ │ │ ├── SyncApiSelectTab.java │ │ │ │ │ ├── YApiSettingTab.form │ │ │ │ │ └── YApiSettingTab.java │ │ │ │ ├── common │ │ │ │ ├── AbstractClassAction.java │ │ │ │ ├── FuDataTab.java │ │ │ │ ├── FuDocRender.java │ │ │ │ ├── FuTab.java │ │ │ │ ├── ServiceHelper.java │ │ │ │ ├── base │ │ │ │ │ ├── BaseIcon.java │ │ │ │ │ ├── FuFunction.java │ │ │ │ │ └── KeyValueBO.java │ │ │ │ ├── constant │ │ │ │ │ ├── ApiUrl.java │ │ │ │ │ ├── FuConsoleConstants.java │ │ │ │ │ ├── FuDocConstants.java │ │ │ │ │ ├── PathConstants.java │ │ │ │ │ └── TipInfoConstants.java │ │ │ │ ├── datakey │ │ │ │ │ └── FuDocDataKey.java │ │ │ │ ├── enumtype │ │ │ │ │ ├── ControllerAnnotation.java │ │ │ │ │ └── Theme.java │ │ │ │ ├── exception │ │ │ │ │ ├── FuDocException.java │ │ │ │ │ ├── IssueException.java │ │ │ │ │ └── report │ │ │ │ │ │ ├── FuErrorReportSubmitter.java │ │ │ │ │ │ └── issue │ │ │ │ │ │ ├── AbstractIssueSubmitter.java │ │ │ │ │ │ ├── GiteeIssueSubmitter.java │ │ │ │ │ │ ├── GithubIssueSubmitter.java │ │ │ │ │ │ ├── IssueSubmitter.java │ │ │ │ │ │ └── param │ │ │ │ │ │ ├── GithubIssueBody.java │ │ │ │ │ │ └── IssueBody.java │ │ │ │ └── listener │ │ │ │ │ ├── FuDocLoadListener.java │ │ │ │ │ └── FuDocSetupAbleListener.java │ │ │ │ ├── components │ │ │ │ ├── BooleanColumnInfo.java │ │ │ │ ├── ButtonTableCellEditor.java │ │ │ │ ├── ChooseFileComponents.java │ │ │ │ ├── EditableColumnInfo.java │ │ │ │ ├── EditorListComponent.java │ │ │ │ ├── FuButtonRenderer.java │ │ │ │ ├── FuButtonTableEditor.java │ │ │ │ ├── FuCmdComponent.java │ │ │ │ ├── FuEditorComponent.java │ │ │ │ ├── FuEditorEmptyTextPainter.java │ │ │ │ ├── FuIconListRendererComponent.java │ │ │ │ ├── FuListStringComponent.java │ │ │ │ ├── FuStatusLabel.java │ │ │ │ ├── FuTabComponent.java │ │ │ │ ├── FuTableCellEditorListener.java │ │ │ │ ├── FuTableComboBoxRenderer.java │ │ │ │ ├── FuTableComponent.java │ │ │ │ ├── FuTableEditorComponent.java │ │ │ │ ├── FuTableView.java │ │ │ │ ├── JLabelListRendererComponent.java │ │ │ │ ├── LeftRightComponent.java │ │ │ │ ├── PlaceholderTextField.java │ │ │ │ ├── RightComponent.java │ │ │ │ ├── SingleAction.java │ │ │ │ ├── StringColumnInfo.java │ │ │ │ ├── TreeTableCellEditor.java │ │ │ │ ├── action │ │ │ │ │ ├── FuFiltersAction.java │ │ │ │ │ ├── FuRequestViewModeAction.java │ │ │ │ │ ├── IssueAction.java │ │ │ │ │ └── ShowFilterAction.java │ │ │ │ ├── bo │ │ │ │ │ ├── BarPanelBO.java │ │ │ │ │ ├── BaseList.java │ │ │ │ │ ├── BaseTemplate.java │ │ │ │ │ ├── DynamicTableBO.java │ │ │ │ │ ├── HeaderKeyValueBO.java │ │ │ │ │ ├── KeyValueTableBO.java │ │ │ │ │ ├── TabActionBO.java │ │ │ │ │ ├── TipCmd.java │ │ │ │ │ ├── TreePathBO.java │ │ │ │ │ └── TreeTableBO.java │ │ │ │ ├── column │ │ │ │ │ ├── BooleanColumn.java │ │ │ │ │ ├── ButtonColumn.java │ │ │ │ │ ├── Column.java │ │ │ │ │ ├── ComboBoxColumn.java │ │ │ │ │ ├── DynamicColumn.java │ │ │ │ │ ├── SpringBootColumn.java │ │ │ │ │ ├── StringColumn.java │ │ │ │ │ └── TreeModuleComboBoxColumn.java │ │ │ │ ├── dialog │ │ │ │ │ └── CustomTableSettingDialog.java │ │ │ │ ├── factory │ │ │ │ │ ├── FuTabBuilder.java │ │ │ │ │ ├── FuTableColumnFactory.java │ │ │ │ │ ├── LightVirtualFileFactory.java │ │ │ │ │ └── TableCellEditorFactory.java │ │ │ │ ├── listener │ │ │ │ │ ├── ChooseFileListener.java │ │ │ │ │ ├── FuActionListener.java │ │ │ │ │ ├── FuEditorListener.java │ │ │ │ │ ├── FuFiltersListener.java │ │ │ │ │ ├── FuMsgListener.java │ │ │ │ │ ├── FuStatusLabelListener.java │ │ │ │ │ ├── FuTableDisableListener.java │ │ │ │ │ ├── FuTableListener.java │ │ │ │ │ ├── FuViewListener.java │ │ │ │ │ ├── SendHttpListener.java │ │ │ │ │ └── TabBarListener.java │ │ │ │ ├── message │ │ │ │ │ ├── FuHighlightComponent.java │ │ │ │ │ ├── FuMessageComponent.java │ │ │ │ │ ├── FuMsgHandler.java │ │ │ │ │ ├── HighlightedRegion.java │ │ │ │ │ ├── MessageComponent.java │ │ │ │ │ ├── ResponseInfoMessageGenerator.java │ │ │ │ │ └── handler │ │ │ │ │ │ ├── ClickMsgExecutor.java │ │ │ │ │ │ ├── DialogMsgExecutor.java │ │ │ │ │ │ ├── FuMsgExecutor.java │ │ │ │ │ │ ├── LinkMsgExecutor.java │ │ │ │ │ │ └── NormalMsgExecutor.java │ │ │ │ ├── toolbar │ │ │ │ │ └── PinToolBarAction.java │ │ │ │ ├── tree │ │ │ │ │ ├── FuTreeActionListener.java │ │ │ │ │ ├── FuTreeCellRenderer.java │ │ │ │ │ ├── FuTreeComponent.java │ │ │ │ │ ├── FuTreeModel.java │ │ │ │ │ ├── FuTreeToolbarDecorator.java │ │ │ │ │ ├── node │ │ │ │ │ │ └── FuTreeNode.java │ │ │ │ │ └── old │ │ │ │ │ │ ├── ApiCategoryTreeNode.java │ │ │ │ │ │ ├── FuModuleTreeComponent.java │ │ │ │ │ │ ├── FuModuleTreeStructure.java │ │ │ │ │ │ ├── FuTableTreeComboBoxRenderer.java │ │ │ │ │ │ ├── FuTableTreeComponent.java │ │ │ │ │ │ ├── FuTreeComponent.java │ │ │ │ │ │ ├── FuTreeNode.java │ │ │ │ │ │ ├── FuTreePopup.java │ │ │ │ │ │ ├── FuTreeStructure.java │ │ │ │ │ │ └── ModuleNode.java │ │ │ │ ├── validator │ │ │ │ │ ├── CreateCategoryValidator.java │ │ │ │ │ └── InputExistsValidator.java │ │ │ │ └── widget │ │ │ │ │ ├── FuResponseStatusWidget.java │ │ │ │ │ └── FuWidget.java │ │ │ │ ├── console │ │ │ │ ├── FuConsoleLogger.java │ │ │ │ ├── FuConsoleManager.java │ │ │ │ └── FuLogger.java │ │ │ │ ├── futool │ │ │ │ ├── beancopy │ │ │ │ │ ├── FuBeanCopyCompletion.java │ │ │ │ │ ├── FuDocTemplatesCompletionProvider.java │ │ │ │ │ ├── MyPrefixMatcher.java │ │ │ │ │ ├── bo │ │ │ │ │ │ ├── CopyBeanBO.java │ │ │ │ │ │ ├── CopyBeanMethodBO.java │ │ │ │ │ │ ├── FuCompletion.java │ │ │ │ │ │ └── FuPsiMethod.java │ │ │ │ │ └── template │ │ │ │ │ │ ├── FuBeanCopyTemplate.java │ │ │ │ │ │ └── FuPostfixTemplateProvider.java │ │ │ │ ├── beantojson │ │ │ │ │ ├── action │ │ │ │ │ │ └── BeanToJsonAction.java │ │ │ │ │ └── service │ │ │ │ │ │ └── GenObjectJsonServiceImpl.java │ │ │ │ └── dtoconvert │ │ │ │ │ ├── action │ │ │ │ │ └── Vo2DtoGenerateAction.java │ │ │ │ │ ├── application │ │ │ │ │ └── IGenerateVo2Dto.java │ │ │ │ │ ├── domain │ │ │ │ │ ├── model │ │ │ │ │ │ ├── GenerateContext.java │ │ │ │ │ │ ├── GetObjConfigDO.java │ │ │ │ │ │ └── SetObjConfigDO.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── AbstractGenerateVo2Dto.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── GenerateVo2DtoImpl.java │ │ │ │ │ └── infrastructure │ │ │ │ │ └── Utils.java │ │ │ │ ├── navigation │ │ │ │ ├── ApiNavigationItem.java │ │ │ │ ├── FuApiNavigationContributor.java │ │ │ │ ├── FuApiNavigationExecutor.java │ │ │ │ ├── FuApiRenderer.java │ │ │ │ ├── FuNavigationApiEveryWhereFactory.java │ │ │ │ ├── action │ │ │ │ │ └── FuApiNavigationAction.java │ │ │ │ ├── match │ │ │ │ │ └── FuApiMatcher.java │ │ │ │ └── recent │ │ │ │ │ ├── ProjectRecentApi.java │ │ │ │ │ ├── RecentApiLog.java │ │ │ │ │ └── RecentNavigationManager.java │ │ │ │ ├── request │ │ │ │ ├── HttpCallback.java │ │ │ │ ├── SendRequestHandler.java │ │ │ │ ├── action │ │ │ │ │ ├── AbstractRequestAction.java │ │ │ │ │ ├── RequestAction.java │ │ │ │ │ └── toolbar │ │ │ │ │ │ └── CopyCurlAction.java │ │ │ │ ├── callback │ │ │ │ │ └── FuRequestCallback.java │ │ │ │ ├── configurable │ │ │ │ │ └── FuRequestSettingConfigurable.java │ │ │ │ ├── constants │ │ │ │ │ ├── RequestConstants.java │ │ │ │ │ └── enumtype │ │ │ │ │ │ ├── HeaderScope.java │ │ │ │ │ │ ├── RequestDialog.java │ │ │ │ │ │ ├── RequestStatus.java │ │ │ │ │ │ ├── ResponseType.java │ │ │ │ │ │ ├── ScriptCmd.java │ │ │ │ │ │ ├── ScriptCmdType.java │ │ │ │ │ │ ├── ScriptType.java │ │ │ │ │ │ └── ViewMode.java │ │ │ │ ├── data │ │ │ │ │ └── FuRequestSettingData.java │ │ │ │ ├── execute │ │ │ │ │ ├── FuHttpRequest.java │ │ │ │ │ ├── FuHttpRequestBuilder.java │ │ │ │ │ ├── FuHttpResponseBuilder.java │ │ │ │ │ ├── HttpApiExecutor.java │ │ │ │ │ └── HttpExecutor.java │ │ │ │ ├── factory │ │ │ │ │ └── FuHttpRequestDataFactory.java │ │ │ │ ├── global │ │ │ │ │ ├── FuRequest.java │ │ │ │ │ ├── FuRequestWindowData.java │ │ │ │ │ ├── GlobalRequestData.java │ │ │ │ │ ├── GlobalRequestSettingData.java │ │ │ │ │ └── RequestHistory.java │ │ │ │ ├── http │ │ │ │ │ ├── FuHttpClient.java │ │ │ │ │ ├── FuRequest.java │ │ │ │ │ ├── action │ │ │ │ │ │ └── RequestHttpAction.java │ │ │ │ │ ├── convert │ │ │ │ │ │ └── HttpDataConvert.java │ │ │ │ │ ├── data │ │ │ │ │ │ └── HttpClientData.java │ │ │ │ │ ├── dto │ │ │ │ │ │ └── HttpRecentDTO.java │ │ │ │ │ ├── helper │ │ │ │ │ │ └── FuRequestFactory.java │ │ │ │ │ ├── impl │ │ │ │ │ │ ├── FuHttpClientImpl.java │ │ │ │ │ │ └── FuRequestImpl.java │ │ │ │ │ └── view │ │ │ │ │ │ └── FuRequestView.java │ │ │ │ ├── js │ │ │ │ │ ├── JsExecutor.java │ │ │ │ │ └── context │ │ │ │ │ │ └── FuContext.java │ │ │ │ ├── manager │ │ │ │ │ ├── FuCurlManager.java │ │ │ │ │ ├── FuRequestConsoleManager.java │ │ │ │ │ ├── FuRequestManager.java │ │ │ │ │ └── FuRequestToolBarManager.java │ │ │ │ ├── po │ │ │ │ │ ├── FuCookiePO.java │ │ │ │ │ ├── FuRequestAuthConfigPO.java │ │ │ │ │ ├── FuRequestConfigPO.java │ │ │ │ │ ├── GlobalKeyValuePO.java │ │ │ │ │ └── GlobalPreScriptPO.java │ │ │ │ ├── pojo │ │ │ │ │ ├── AuthConfigCode.java │ │ │ │ │ ├── AuthConfigData.java │ │ │ │ │ ├── BaseAuthConfig.java │ │ │ │ │ ├── BasePopupMenuItem.java │ │ │ │ │ ├── CommonHeader.java │ │ │ │ │ ├── ConfigAuthTableBO.java │ │ │ │ │ ├── ConfigEnvTableBO.java │ │ │ │ │ ├── FuHttpRequestData.java │ │ │ │ │ ├── FuHttpResultData.java │ │ │ │ │ ├── FuRequestBodyData.java │ │ │ │ │ ├── FuRequestConsoleData.java │ │ │ │ │ ├── FuRequestData.java │ │ │ │ │ ├── FuResponseConsoleData.java │ │ │ │ │ ├── FuResponseData.java │ │ │ │ │ ├── GlobalHeaderData.java │ │ │ │ │ ├── JavaCodeAuthConfig.java │ │ │ │ │ ├── PreOperationTableBO.java │ │ │ │ │ ├── ScriptConfigData.java │ │ │ │ │ └── SpringBootEnvConfigInfo.java │ │ │ │ ├── state │ │ │ │ │ ├── FuRequestSettingState.java │ │ │ │ │ └── FuRequestState.java │ │ │ │ ├── tab │ │ │ │ │ ├── AbstractBulkEditTabLinkage.java │ │ │ │ │ ├── request │ │ │ │ │ │ ├── HttpGetParamsTab.java │ │ │ │ │ │ ├── HttpHeaderTab.java │ │ │ │ │ │ ├── HttpPathParamsTab.java │ │ │ │ │ │ ├── HttpRequestBodyTab.java │ │ │ │ │ │ ├── RequestConsoleTabView.java │ │ │ │ │ │ ├── RequestTabView.java │ │ │ │ │ │ ├── ResponseHeaderTabView.java │ │ │ │ │ │ └── ResponseTabView.java │ │ │ │ │ └── settings │ │ │ │ │ │ ├── GlobalConfigTab.java │ │ │ │ │ │ ├── GlobalCookiesTab.java │ │ │ │ │ │ ├── GlobalHeaderTab.java │ │ │ │ │ │ ├── GlobalScriptTab.java │ │ │ │ │ │ └── GlobalVariableTab.java │ │ │ │ └── view │ │ │ │ │ ├── FuRequestSettingView.java │ │ │ │ │ ├── FuRequestStatusInfoView.java │ │ │ │ │ ├── HttpCmdView.java │ │ │ │ │ ├── HttpCookieView.java │ │ │ │ │ ├── HttpDialogView.java │ │ │ │ │ ├── ModuleScopeView.java │ │ │ │ │ ├── ResponseDownloadFileVIew.form │ │ │ │ │ ├── ResponseDownloadFileVIew.java │ │ │ │ │ ├── ResponseErrorView.form │ │ │ │ │ ├── ResponseErrorView.java │ │ │ │ │ ├── ResponseFileView.form │ │ │ │ │ ├── ResponseFileView.java │ │ │ │ │ ├── provider │ │ │ │ │ └── FuDocLineMarkerProvider.java │ │ │ │ │ ├── toolwindow │ │ │ │ │ ├── FuDocToolWindowFactory.java │ │ │ │ │ ├── FuRequestConsoleToolWindowFactory.java │ │ │ │ │ └── FuRequestWindow.java │ │ │ │ │ └── widget │ │ │ │ │ ├── EnvWidget.java │ │ │ │ │ ├── HttpCodeWidget.java │ │ │ │ │ ├── HttpContentSizeWidget.java │ │ │ │ │ ├── HttpCookieWidget.java │ │ │ │ │ ├── HttpTimeWidget.java │ │ │ │ │ ├── HttpToolBarWidget.java │ │ │ │ │ └── UserWidget.java │ │ │ │ ├── spring │ │ │ │ ├── LoadSpringConfigListener.java │ │ │ │ ├── SpringBootEnvLoader.java │ │ │ │ ├── SpringBootEnvModuleInfo.java │ │ │ │ ├── SpringConfigFile.java │ │ │ │ ├── SpringConfigFileConstants.java │ │ │ │ ├── SpringConfigManager.java │ │ │ │ └── handler │ │ │ │ │ ├── ConfigFileHandler.java │ │ │ │ │ ├── PropertiesConfigFileHandler.java │ │ │ │ │ └── YamlConfigFileHandler.java │ │ │ │ ├── storage │ │ │ │ ├── FuRequestConfigStorage.java │ │ │ │ ├── FuRequestStorage.java │ │ │ │ ├── FuStorageAppender.java │ │ │ │ ├── FuStorageExecutor.java │ │ │ │ ├── enumtype │ │ │ │ │ ├── FuStorageFileType.java │ │ │ │ │ └── FuStorageType.java │ │ │ │ ├── handler │ │ │ │ │ ├── AbstractFuStorageHandler.java │ │ │ │ │ ├── AbstractJsonDataStorage.java │ │ │ │ │ ├── FuRequestStorage.java │ │ │ │ │ ├── FuStorageHandler.java │ │ │ │ │ └── FuSyncApiProjectStorage.java │ │ │ │ ├── service │ │ │ │ │ └── AuthConfigStorageService.java │ │ │ │ └── test.http │ │ │ │ ├── test │ │ │ │ ├── action │ │ │ │ │ ├── TestAction.java │ │ │ │ │ ├── TestTableAction.java │ │ │ │ │ └── editor │ │ │ │ │ │ ├── FormatActionProvider.java │ │ │ │ │ │ ├── FuEditorFloatingToolbarProvider.java │ │ │ │ │ │ └── FuEditorFormatAction.java │ │ │ │ └── view │ │ │ │ │ ├── TestHtmlPanel.java │ │ │ │ │ ├── TestPanel.java │ │ │ │ │ ├── TestRequestFrom.form │ │ │ │ │ ├── TestRequestFrom.java │ │ │ │ │ ├── TestTipPanel.java │ │ │ │ │ ├── TestView1.form │ │ │ │ │ ├── TestView1.java │ │ │ │ │ ├── ToolBarTestForm.form │ │ │ │ │ └── ToolBarTestForm.java │ │ │ │ └── util │ │ │ │ ├── AnnotationUtils.java │ │ │ │ ├── ChooseFileTableUtils.java │ │ │ │ ├── ClipboardUtil.java │ │ │ │ ├── CodeUtils.java │ │ │ │ ├── ColorUtils.java │ │ │ │ ├── CommentUtils.java │ │ │ │ ├── ContentTypeUtils.java │ │ │ │ ├── CredentialUtils.java │ │ │ │ ├── EditorSettingsInit.java │ │ │ │ ├── EditorUtils.java │ │ │ │ ├── FastJsonUtils.java │ │ │ │ ├── FuApiUtils.java │ │ │ │ ├── FuDocUtils.java │ │ │ │ ├── FuDocViewUtils.java │ │ │ │ ├── FuEditorSettings.java │ │ │ │ ├── FuMessageUtils.java │ │ │ │ ├── FuPsiUtils.java │ │ │ │ ├── FuRequestUtils.java │ │ │ │ ├── FuStringUtils.java │ │ │ │ ├── GenFuDocUtils.java │ │ │ │ ├── HttpResponseUtil.java │ │ │ │ ├── JTableUtils.java │ │ │ │ ├── LambdaUtils.java │ │ │ │ ├── MapListUtil.java │ │ │ │ ├── MarkdownToHtmlUtils.java │ │ │ │ ├── MatchUrlUtils.java │ │ │ │ ├── MavenUtils.java │ │ │ │ ├── MessageStyleUtil.java │ │ │ │ ├── ObjectUtils.java │ │ │ │ ├── PathUtils.java │ │ │ │ ├── PsiClassUtils.java │ │ │ │ ├── ResourceUtils.java │ │ │ │ ├── ShowSettingUtils.java │ │ │ │ ├── StorageUtils.java │ │ │ │ ├── TableCellListener.java │ │ │ │ ├── TimeFormatUtils.java │ │ │ │ ├── ToolBarUtils.java │ │ │ │ ├── ValidateAnnotationUtils.java │ │ │ │ └── YApiUtil.java │ │ └── icons │ │ │ ├── ExpUiIcons.java │ │ │ └── FuDocIcons.java │ ├── kotlin │ │ └── com │ │ │ └── github │ │ │ └── wangdingfu │ │ │ └── fuapidocplugin │ │ │ ├── MyBundle.kt │ │ │ ├── listeners │ │ │ └── MyProjectManagerListener.kt │ │ │ └── services │ │ │ ├── MyApplicationService.kt │ │ │ └── MyProjectService.kt │ └── resources │ │ ├── META-INF │ │ ├── plugin.xml │ │ ├── pluginIcon.svg │ │ └── pluginIcon_backup.svg │ │ ├── icon │ │ ├── SpringBoot.svg │ │ ├── apifox.svg │ │ ├── auth.svg │ │ ├── body.png │ │ ├── body.svg │ │ ├── bulk_edit.svg │ │ ├── console.svg │ │ ├── cookie.svg │ │ ├── enviroment.svg │ │ ├── file-binary.svg │ │ ├── form.svg │ │ ├── fudoc.svg │ │ ├── header.png │ │ ├── header.svg │ │ ├── http.svg │ │ ├── http │ │ │ ├── all.svg │ │ │ ├── all_dark.svg │ │ │ ├── delete.svg │ │ │ ├── delete_dark.svg │ │ │ ├── get.svg │ │ │ ├── get_dark.svg │ │ │ ├── patch.svg │ │ │ ├── patch_dark.svg │ │ │ ├── post.svg │ │ │ ├── post_dark.svg │ │ │ ├── put.svg │ │ │ └── put_dark.svg │ │ ├── ignore.svg │ │ ├── json.svg │ │ ├── magic-wand.svg │ │ ├── message.svg │ │ ├── more.svg │ │ ├── moreVertical.svg │ │ ├── moreVertical_dark.svg │ │ ├── more_dark.svg │ │ ├── more_stroke.svg │ │ ├── params.png │ │ ├── params.svg │ │ ├── raw.svg │ │ ├── request.svg │ │ ├── response.svg │ │ ├── rows.png │ │ ├── script.svg │ │ ├── send.png │ │ ├── send.svg │ │ ├── settings.svg │ │ ├── settings2.svg │ │ ├── show.ico │ │ ├── showdoc.svg │ │ ├── spring.svg │ │ ├── sync.svg │ │ ├── sync2.svg │ │ ├── upload.svg │ │ ├── upload_dark.svg │ │ ├── urlencoded.svg │ │ ├── user.svg │ │ ├── variable.svg │ │ ├── yapi.png │ │ └── yapi.svg │ │ ├── messages │ │ └── MyBundle.properties │ │ └── template │ │ ├── auth │ │ ├── auth_config.js │ │ ├── code_get_header.js │ │ ├── code_get_variable.js │ │ ├── code_http.js │ │ ├── code_set_header.js │ │ └── code_set_variable.js │ │ ├── auth_config.js │ │ ├── console │ │ ├── request_console.ftl │ │ └── response_console.ftl │ │ ├── fu_doc.ftl │ │ ├── fu_doc_enum.ftl │ │ ├── fu_doc_enum_table.ftl │ │ ├── fu_doc_object.ftl │ │ ├── http │ │ └── http_client.ftl │ │ ├── issue.ftl │ │ ├── java_code.ftl │ │ └── yapi.ftl └── test │ ├── java │ └── com │ │ └── wdfu │ │ └── fudoc │ │ ├── FreemarkerContentTest.java │ │ ├── FuDocSettingTest.java │ │ └── YamlTest.java │ ├── kotlin │ └── com │ │ └── github │ │ └── wangdingfu │ │ └── fuapidocplugin │ │ └── MyPluginTest.kt │ └── testData │ └── rename │ ├── foo.xml │ └── foo_after.xml └── todo.md /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Dependabot configuration: 2 | # https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/configuration-options-for-dependency-updates 3 | 4 | version: 2 5 | updates: 6 | # Maintain dependencies for Gradle dependencies 7 | - package-ecosystem: "gradle" 8 | directory: "/" 9 | target-branch: "next" 10 | schedule: 11 | interval: "daily" 12 | # Maintain dependencies for GitHub Actions 13 | - package-ecosystem: "github-actions" 14 | directory: "/" 15 | target-branch: "next" 16 | schedule: 17 | interval: "daily" 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | .idea 3 | .qodana 4 | build 5 | /src/main/java/com/wdf/fudoc/start/ 6 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /img/beanCopy1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/img/beanCopy1.png -------------------------------------------------------------------------------- /img/beanCopy2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/img/beanCopy2.png -------------------------------------------------------------------------------- /img/guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/img/guide.png -------------------------------------------------------------------------------- /img/install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/img/install.png -------------------------------------------------------------------------------- /img/request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/img/request.png -------------------------------------------------------------------------------- /img/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/img/search.png -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | rootProject.name = "fu-api-doc-plugin" 2 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/assemble/handler/BaseParamFieldValueHandler.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.assemble.handler; 2 | 3 | import com.wdf.fudoc.apidoc.pojo.context.FuDocContext; 4 | import com.wdf.fudoc.apidoc.pojo.desc.BaseInfoDesc; 5 | import com.wdf.fudoc.apidoc.pojo.desc.ObjectInfoDesc; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2022-06-18 22:45:30 10 | */ 11 | public abstract class BaseParamFieldValueHandler implements ParamValueHandler { 12 | 13 | protected abstract String doGetParamValue(FuDocContext fuDocContext, ObjectInfoDesc objectInfoDesc); 14 | 15 | @Override 16 | public String getParamValue(FuDocContext fuDocContext, BaseInfoDesc baseInfoDesc) { 17 | if (baseInfoDesc instanceof ObjectInfoDesc) { 18 | return doGetParamValue(fuDocContext, (ObjectInfoDesc) baseInfoDesc); 19 | } 20 | return null; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/assemble/handler/ParamValueHandler.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.assemble.handler; 2 | 3 | import com.wdf.fudoc.apidoc.constant.enumtype.ParamValueType; 4 | import com.wdf.fudoc.apidoc.pojo.context.FuDocContext; 5 | import com.wdf.fudoc.apidoc.pojo.desc.BaseInfoDesc; 6 | 7 | /** 8 | * 参数值获取接口 9 | * 10 | * @author wangdingfu 11 | * @date 2022-06-18 22:36:11 12 | */ 13 | public interface ParamValueHandler { 14 | 15 | 16 | ParamValueType getParamValueType(); 17 | 18 | 19 | String getParamValue(FuDocContext fuDocContext, BaseInfoDesc baseInfoDesc); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/assemble/handler/impl/ParamNameValueHandler.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.assemble.handler.impl; 2 | 3 | import com.wdf.fudoc.apidoc.assemble.handler.BaseParamFieldValueHandler; 4 | import com.wdf.fudoc.apidoc.constant.enumtype.ParamValueType; 5 | import com.wdf.fudoc.apidoc.pojo.context.FuDocContext; 6 | import com.wdf.fudoc.apidoc.pojo.desc.ObjectInfoDesc; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @Description 参数名称获取接口实现 11 | * @date 2022-06-18 22:37:09 12 | */ 13 | public class ParamNameValueHandler extends BaseParamFieldValueHandler { 14 | 15 | 16 | @Override 17 | public ParamValueType getParamValueType() { 18 | return ParamValueType.PARAM_NAME; 19 | } 20 | 21 | @Override 22 | protected String doGetParamValue(FuDocContext fuDocContext, ObjectInfoDesc objectInfoDesc) { 23 | return objectInfoDesc.getName(); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/assemble/handler/impl/ParamTypeViewValueHandler.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.assemble.handler.impl; 2 | 3 | import com.wdf.fudoc.apidoc.assemble.handler.BaseParamFieldValueHandler; 4 | import com.wdf.fudoc.apidoc.constant.enumtype.ParamValueType; 5 | import com.wdf.fudoc.apidoc.pojo.context.FuDocContext; 6 | import com.wdf.fudoc.apidoc.pojo.desc.ObjectInfoDesc; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @Description 参数显示的类型值获取 11 | * @date 2022-06-24 22:32:38 12 | */ 13 | public class ParamTypeViewValueHandler extends BaseParamFieldValueHandler { 14 | @Override 15 | public ParamValueType getParamValueType() { 16 | return ParamValueType.PARAM_TYPE_VIEW; 17 | } 18 | 19 | 20 | @Override 21 | protected String doGetParamValue(FuDocContext fuDocContext, ObjectInfoDesc objectInfoDesc) { 22 | return objectInfoDesc.getTypeView(); 23 | } 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/config/DefaultConfig.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.config; 2 | 3 | import com.google.common.collect.Lists; 4 | import com.wdf.fudoc.apidoc.constant.CommonObjectNames; 5 | import com.wdf.fudoc.apidoc.pojo.bo.FilterFieldBO; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2022-08-12 22:37:40 12 | */ 13 | public class DefaultConfig { 14 | 15 | public static boolean sendStatus = false; 16 | 17 | /** 18 | * 默认需要过滤的字段 19 | */ 20 | public static final List 21 | DEFAULT_FILTER_FIELD_LIST = Lists.newArrayList( 22 | new FilterFieldBO(CommonObjectNames.HTTP_REQUEST, ""), 23 | new FilterFieldBO(CommonObjectNames.HTTP_RESPONSE, ""), 24 | new FilterFieldBO(CommonObjectNames.MYBATIS_PLUS_PAGE, "orders,optimizeCountSql,searchCount,optimizeJoinOfCountSql,countId,maxLimit")); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/CommonObjectNames.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant; 2 | 3 | import com.google.common.collect.Lists; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * java类路径 9 | * 10 | * @author wangdingfu 11 | * @date 2022-04-27 21:32:42 12 | */ 13 | public interface CommonObjectNames { 14 | 15 | String HTTP_REQUEST = "javax.servlet.http.HttpServletRequest"; 16 | String HTTP_RESPONSE = "javax.servlet.http.HttpServletResponse"; 17 | 18 | String MYBATIS_PLUS_PAGE = "com.baomidou.mybatisplus.plugins.Page"; 19 | 20 | 21 | String MULTIPART_FILE = "org.springframework.web.multipart.MultipartFile"; 22 | 23 | 24 | String JSON_IGNORE = "com.fasterxml.jackson.annotation.JsonIgnore"; 25 | 26 | String JSON_PROPERTY = "com.fasterxml.jackson.annotation.JsonProperty"; 27 | 28 | 29 | List filterList = Lists.newArrayList( 30 | HTTP_REQUEST, 31 | HTTP_RESPONSE 32 | ); 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/ActionType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2022-09-07 17:16:56 6 | */ 7 | public enum ActionType { 8 | /** 9 | * 常规动作 10 | */ 11 | AN_ACTION, 12 | 13 | /** 14 | * 切换动作 15 | */ 16 | TOGGLE_ACTION; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/AnnotationValueType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @Descption 枚举值类型 6 | * @date 2022-05-11 21:27:54 7 | */ 8 | public enum AnnotationValueType { 9 | /** 10 | * 常量 11 | */ 12 | CONSTANT, 13 | 14 | /** 15 | * 枚举 16 | */ 17 | ENUM, 18 | 19 | /** 20 | * class 21 | */ 22 | CLASS, 23 | 24 | /** 25 | * 数组 26 | */ 27 | ARRAY, 28 | 29 | /** 30 | * 注解 31 | */ 32 | NESTED_ANNOTATION, 33 | 34 | ; 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/ApiDocSystem.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * 接口文档系统枚举 7 | * 8 | * @author wangdingfu 9 | * @date 2022-12-31 21:42:54 10 | */ 11 | @Getter 12 | public enum ApiDocSystem { 13 | 14 | 15 | YAPI("yapi"), 16 | SHOW_DOC("showDoc"), 17 | API_FOX("apiFox"), 18 | 19 | ; 20 | 21 | 22 | private final String code; 23 | 24 | ApiDocSystem(String code) { 25 | this.code = code; 26 | } 27 | 28 | 29 | public static ApiDocSystem getInstance(String code) { 30 | for (ApiDocSystem value : ApiDocSystem.values()) { 31 | if (value.getCode().equals(code)) { 32 | return value; 33 | } 34 | } 35 | return null; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/ApiSyncStatus.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * api同步状态 7 | * 8 | * @author wangdingfu 9 | * @date 2023-01-05 13:52:50 10 | */ 11 | @Getter 12 | public enum ApiSyncStatus { 13 | 14 | TO_SYNC("1", "待同步"), 15 | SYNCING("2", "同步中"), 16 | SUCCESS("3", "同步成功"), 17 | FAIL("4", "同步失败"), 18 | ; 19 | 20 | private final String code; 21 | 22 | private final String message; 23 | 24 | ApiSyncStatus(String code, String message) { 25 | this.code = code; 26 | this.message = message; 27 | } 28 | 29 | public static ApiSyncStatus getInstance(String message) { 30 | for (ApiSyncStatus value : ApiSyncStatus.values()) { 31 | if (value.getMessage().equals(message)) { 32 | return value; 33 | } 34 | } 35 | return null; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/ContentType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * 请求数据类型 7 | * 8 | * @author wangdingfu 9 | * @date 2022-05-17 23:33:21 10 | */ 11 | @Getter 12 | public enum ContentType { 13 | 14 | /** 15 | * POST 请求 16 | */ 17 | URLENCODED("application/x-www-form-urlencoded", ""), 18 | FORM_DATA("multipart/form-data", "form"), 19 | JSON("application/json", "json"), 20 | RAW("application/raw", "raw"), 21 | ; 22 | 23 | private final String type; 24 | 25 | private final String desc; 26 | 27 | ContentType(String type, String desc) { 28 | this.type = type; 29 | this.desc = desc; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/DynamicDataType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | import lombok.Getter; 4 | 5 | import java.util.Arrays; 6 | import java.util.Set; 7 | import java.util.stream.Collectors; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2022-08-16 22:45:50 12 | */ 13 | @Getter 14 | public enum DynamicDataType { 15 | 16 | ANNOTATION("annotation","注解"), 17 | 18 | ; 19 | 20 | private final String code; 21 | 22 | private final String msg; 23 | 24 | DynamicDataType(String code, String msg) { 25 | this.code = code; 26 | this.msg = msg; 27 | } 28 | 29 | public static Set getCodes(){ 30 | return Arrays.stream(DynamicDataType.values()).map(DynamicDataType::getCode).collect(Collectors.toSet()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/FuDocObjectType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @Descption 对象类型 6 | * @date 2022-05-20 18:51:02 7 | */ 8 | public enum FuDocObjectType { 9 | 10 | PRIMITIVE, 11 | COMMON_OBJECT, 12 | DEFAULT_OBJECT, 13 | MAP_OBJECT, 14 | COLLECTION_OBJECT, 15 | ARRAY, 16 | MULTIPART_FILE, 17 | OBJECT, 18 | VOID, 19 | 20 | 21 | ; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/HeaderLevel.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | import java.util.Arrays; 7 | import java.util.Set; 8 | import java.util.stream.Collectors; 9 | 10 | /** 11 | * @author wangdingfu 12 | * @date 2023-07-01 21:27:10 13 | */ 14 | @Getter 15 | @AllArgsConstructor 16 | public enum HeaderLevel { 17 | 18 | API("0","接口请求头"), 19 | GLOBAL("1","全局请求头"), 20 | 21 | ; 22 | 23 | private final String level; 24 | 25 | private final String view; 26 | 27 | public static Set getCodes(){ 28 | return Arrays.stream(HeaderLevel.values()).map(HeaderLevel::getView).collect(Collectors.toSet()); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/MockResultType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * mock数据结果类型 7 | * 8 | * @author wangdingfu 9 | * @date 2022-11-16 23:04:42 10 | */ 11 | @Getter 12 | public enum MockResultType { 13 | 14 | 15 | DEFAULT(""), 16 | JSON("json"), 17 | YAML("yaml"), 18 | PROPERTIES("properties"); 19 | 20 | private final String code; 21 | 22 | MockResultType(String code) { 23 | this.code = code; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/ParamType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | /** 4 | * 参数类型 5 | * 6 | * @author wangdingfu 7 | * @date 2022-08-16 10:34:35 8 | */ 9 | public enum ParamType { 10 | 11 | /** 12 | * 请求参数 13 | */ 14 | REQUEST_PARAM, 15 | 16 | /** 17 | * 响应参数 18 | */ 19 | RESPONSE_PARAM, 20 | 21 | /** 22 | * 未知 23 | */ 24 | NONE; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/ParamValueType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | /** 4 | * 参数值类型 5 | * 6 | * @author wangdingfu 7 | * @date 2022-06-17 21:16:19 8 | */ 9 | public enum ParamValueType { 10 | 11 | PARAM_NAME, 12 | 13 | PARAM_COMMENT, 14 | 15 | METHOD_TITLE, 16 | METHOD_DETAIL_INFO, 17 | 18 | PARAM_REQUIRE, 19 | PARAM_TYPE_VIEW, 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/RequestParamType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | import lombok.Getter; 4 | 5 | import java.util.Arrays; 6 | import java.util.Set; 7 | import java.util.stream.Collectors; 8 | 9 | /** 10 | * 请求参数类型 11 | * @author wangdingfu 12 | * @date 2022-09-07 14:07:13 13 | */ 14 | @Getter 15 | public enum RequestParamType { 16 | 17 | /** 18 | * 文本 19 | */ 20 | TEXT("text","文本"), 21 | /** 22 | * 文件 23 | */ 24 | FILE("file","文件"), 25 | 26 | 27 | ; 28 | 29 | private final String code; 30 | private final String view; 31 | 32 | RequestParamType(String code, String view) { 33 | this.code = code; 34 | this.view = view; 35 | } 36 | 37 | public static Set getCodes(){ 38 | return Arrays.stream(RequestParamType.values()).map(RequestParamType::getCode).collect(Collectors.toSet()); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/RootParamType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2022-09-27 17:06:16 6 | */ 7 | public enum RootParamType { 8 | 9 | REQUEST_BODY, 10 | 11 | REQUEST_PARAM, 12 | 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/SpringParamAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2022-09-19 15:47:12 6 | */ 7 | public enum SpringParamAnnotation { 8 | 9 | REQUEST_PARAM, 10 | PATH_VARIABLE, 11 | REQUEST_BODY, 12 | NONE, 13 | ; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/ValidMessageType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2022-08-15 20:35:51 8 | */ 9 | @Getter 10 | public enum ValidMessageType { 11 | 12 | /** 13 | * 替换指定内容 14 | */ 15 | REPLACE(1, "replace", "不能为空,not null"), 16 | 17 | ; 18 | 19 | private final int code; 20 | 21 | private final String msg; 22 | 23 | private final String defaultValue; 24 | 25 | ValidMessageType(int code, String msg, String defaultValue) { 26 | this.code = code; 27 | this.msg = msg; 28 | this.defaultValue = defaultValue; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/constant/enumtype/YesOrNo.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.constant.enumtype; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @descption: 是 或则 否 8 | * @date 2022-05-22 22:33:52 9 | */ 10 | @Getter 11 | public enum YesOrNo { 12 | NO(0, "否"), YES(1, "是"); 13 | 14 | private final int code; 15 | 16 | private final String desc; 17 | 18 | YesOrNo(int code, String desc) { 19 | this.code = code; 20 | this.desc = desc; 21 | } 22 | 23 | 24 | public static boolean getByDesc(String desc) { 25 | return YES.getDesc().equals(desc); 26 | } 27 | 28 | public static int getCode(String desc) { 29 | for (YesOrNo value : YesOrNo.values()) { 30 | if (value.getDesc().equals(desc)) { 31 | return value.getCode(); 32 | } 33 | } 34 | return 0; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/data/FuDocData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.data; 2 | 3 | import com.intellij.openapi.actionSystem.AnActionEvent; 4 | import com.intellij.openapi.module.Module; 5 | import lombok.Builder; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @descption: FuDoc数据 12 | * @date 2022-05-30 23:34:25 13 | */ 14 | @Getter 15 | @Setter 16 | @Builder 17 | public class FuDocData { 18 | 19 | /** 20 | * 当前点击的事件对象 21 | */ 22 | private AnActionEvent event; 23 | 24 | private Module module; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/data/FuDocRootParamData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.data; 2 | 3 | import com.intellij.psi.PsiMethod; 4 | import com.wdf.fudoc.apidoc.constant.enumtype.ContentType; 5 | import com.wdf.fudoc.apidoc.pojo.bo.RootParamBO; 6 | import com.wdf.fudoc.apidoc.pojo.data.CommonItemData; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author wangdingfu 14 | * @date 2022-09-27 17:15:32 15 | */ 16 | @Getter 17 | @Setter 18 | public class FuDocRootParamData extends CommonItemData { 19 | 20 | /** 21 | * 定位api的唯一标识 22 | */ 23 | private String apiId; 24 | 25 | /** 26 | * api的方法节点(用于跳转到对应的接口代码中) 27 | */ 28 | private PsiMethod psiMethod; 29 | 30 | /** 31 | * 根节点参数集合 32 | */ 33 | private List rootParamBOList; 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/data/SettingDynamicValueData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.data; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * 配置动态取值参数对象 8 | * @author wangdingfu 9 | * @date 2022-08-06 22:45:21 10 | */ 11 | @Getter 12 | @Setter 13 | public class SettingDynamicValueData { 14 | 15 | /** 16 | * 别名(为配置的这个值取一个名称 在渲染的时候使用) 17 | */ 18 | private String alias; 19 | 20 | /** 21 | * 类型 默认注解 annotation-注解 22 | */ 23 | private String type = "annotation"; 24 | 25 | /** 26 | * 配置取值的内容 27 | * 例如 com.wdf.annotation.Permission#code 28 | */ 29 | private String value; 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/data/TemplateData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.data; 2 | 3 | import cn.hutool.core.io.resource.ResourceUtil; 4 | 5 | /** 6 | * 模板数据 7 | * 8 | * @author wangdingfu 9 | * @date 2022-08-07 01:08:34 10 | */ 11 | public class TemplateData { 12 | 13 | /** 14 | * fu doc 接口文档模板内容 请查看fu_doc.ftl 15 | */ 16 | public static final String fuDocTemplateValue; 17 | public static final String objectTemplateValue; 18 | public static final String enumTemplateValue1; 19 | public static final String enumTemplateValue2; 20 | 21 | 22 | static { 23 | fuDocTemplateValue = ResourceUtil.readUtf8Str("template/fu_doc.ftl"); 24 | objectTemplateValue = ResourceUtil.readUtf8Str("template/fu_doc_object.ftl"); 25 | enumTemplateValue1 = ResourceUtil.readUtf8Str("template/fu_doc_enum.ftl"); 26 | enumTemplateValue2 = ResourceUtil.readUtf8Str("template/fu_doc_enum_table.ftl"); 27 | } 28 | 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/mock/FuDocObjectJMockData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.mock; 2 | 3 | import com.github.jsonzou.jmockdata.JMockData; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @descption: JMockData 实现mock数据 8 | * @date 2022-05-22 21:49:10 9 | */ 10 | public class FuDocObjectJMockData implements FuDocObjectMock { 11 | 12 | /** 13 | * JMockData框架mock数据 14 | * 15 | * @param classType java class类型 16 | * @param name 字段名 17 | * @param 泛型 18 | * @return mock的值 19 | */ 20 | @Override 21 | public T mock(Class classType, String name) { 22 | //TODO 优先从相关配置中mock常用数据 23 | return JMockData.mock(classType); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/mock/FuDocObjectMock.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.mock; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @descption: ApiDoc mock数据 6 | * @date 2022-05-22 21:47:46 7 | */ 8 | public interface FuDocObjectMock { 9 | 10 | /** 11 | * mock指定类型的数据 12 | * 13 | * @param classType java class类型 14 | * @param name 字段名 15 | * @param 泛型 16 | * @return mock的数据 17 | */ 18 | T mock(Class classType, String name); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/mock/MockDataService.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.mock; 2 | 3 | import com.wdf.fudoc.apidoc.pojo.bo.MockResultBo; 4 | import com.wdf.fudoc.apidoc.pojo.data.FuDocItemData; 5 | import com.wdf.fudoc.apidoc.pojo.desc.MethodInfoDesc; 6 | 7 | /** 8 | * mock接口数据接口 9 | * 10 | * @author wangdingfu 11 | * @date 2022-11-16 22:45:51 12 | */ 13 | public interface MockDataService { 14 | 15 | /** 16 | * mock指定接口的数据 17 | * 18 | * @param methodInfoDesc 指定接口的方法描述信息对象 19 | * @param fuDocItemData 指定接口数据对象 20 | * @return mock的数据 21 | */ 22 | MockResultBo mockData(MethodInfoDesc methodInfoDesc, FuDocItemData fuDocItemData); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/mock/bo/MockDataBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.mock.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 接口mock的数据 10 | * 11 | * @author wangdingfu 12 | * @date 2023-01-13 13:47:23 13 | */ 14 | @Getter 15 | @Setter 16 | public class MockDataBO { 17 | 18 | /** 19 | * GET请求参数mock数据集合 20 | */ 21 | private List headerList; 22 | 23 | /** 24 | * GET请求pathVariable参数mock数据集合 25 | */ 26 | private List pathVariableList; 27 | /** 28 | * GET请求参数mock数据集合 29 | */ 30 | private List getParamList; 31 | /** 32 | * POST请求 form-data格式参数mock数据集合 33 | */ 34 | private List formDataList; 35 | 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/mock/bo/MockJsonDataBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.mock.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-01-13 13:54:34 11 | */ 12 | @Getter 13 | @Setter 14 | public class MockJsonDataBO extends MockParamDataBO { 15 | 16 | /** 17 | * 子对象 18 | */ 19 | private MockJsonDataBO item; 20 | 21 | /** 22 | * 数组 23 | */ 24 | private List array; 25 | 26 | /** 27 | * 当前对象的字段mock数据集合 28 | */ 29 | private List properties; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/mock/bo/MockParamDataBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.mock.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * mock参数对象 8 | * 9 | * @author wangdingfu 10 | * @date 2023-01-13 13:49:48 11 | */ 12 | @Getter 13 | @Setter 14 | public class MockParamDataBO { 15 | /** 16 | * 字段名 17 | */ 18 | private String fileName; 19 | 20 | /** 21 | * 字段类型 22 | */ 23 | private String fileType; 24 | 25 | /** 26 | * mock的值 27 | */ 28 | private String mockValue; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/mock/real/MockRealData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.mock.real; 2 | 3 | import com.wdf.fudoc.util.FuStringUtils; 4 | 5 | import java.util.Objects; 6 | 7 | /** 8 | * mock真实请求过的数据(实际上是从【Fu Request】请求过的示例数据中获取) 9 | * 10 | * @author wangdingfu 11 | * @date 2023-01-16 22:20:48 12 | */ 13 | public interface MockRealData { 14 | 15 | 16 | /** 17 | * 获取字符串格式的真实示例数据 18 | * 19 | * @param fieldName 字段名 20 | * @return 真实请求过的示例数据 21 | */ 22 | default String dataStringData(String fieldName) { 23 | Object data = getData(fieldName); 24 | return Objects.nonNull(data) ? data.toString() : FuStringUtils.EMPTY; 25 | } 26 | 27 | /** 28 | * 获取指定字段名的真实示例数据 29 | * 30 | * @param fieldName 字段名 如果字段名为空 并且数据为数组时 随机获取数组中的一条数据 31 | * @return 真实请求过的数据 32 | */ 33 | Object getData(String fieldName); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/parse/FuDocClassParser.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.parse; 2 | 3 | import com.intellij.psi.PsiClass; 4 | import com.intellij.psi.PsiMethod; 5 | import com.wdf.fudoc.apidoc.pojo.context.FuDocContext; 6 | import com.wdf.fudoc.apidoc.pojo.desc.ClassInfoDesc; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 该接口主要用于解析java类 将Java类的一些信息解析封装成公共的ClasInfoDesc对象 12 | * 13 | * @author wangdingfu 14 | * @descption: 类解析器 15 | * @date 2022-05-08 22:34:17 16 | */ 17 | public interface FuDocClassParser { 18 | 19 | 20 | /** 21 | * 解析java类 将java类的一些信息解析封装 22 | * 23 | * @param fuDocContext 全局上下文 24 | * @param psiClass 指定类的PsiClass 25 | * @param methodList 指定方法集合(为空则当前类所有方法都解析) 26 | * @return java类信息描述对象 27 | */ 28 | ClassInfoDesc parse(FuDocContext fuDocContext, PsiClass psiClass, List methodList); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/parse/comment/CommentParser.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.parse.comment; 2 | 3 | import com.intellij.psi.javadoc.PsiDocComment; 4 | import com.wdf.fudoc.apidoc.pojo.data.ApiDocCommentData; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @Descption java注释解析器 9 | * @date 2022-04-21 21:06:33 10 | */ 11 | public interface CommentParser { 12 | 13 | 14 | /** 15 | * java注释内容解析器 16 | * 17 | * @param psiDocComment intellij 描述的注释对象 18 | * @return 解析成结构化的注释对象 19 | */ 20 | ApiDocCommentData parse(PsiDocComment psiDocComment); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/parse/comment/impl/JavaDocCommentParserImpl.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.parse.comment.impl; 2 | 3 | import com.wdf.fudoc.apidoc.parse.comment.AbstractCommentParser; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @Descption javaDoc官方格式注释解析 8 | * @date 2022-04-21 21:07:52 9 | */ 10 | public class JavaDocCommentParserImpl extends AbstractCommentParser { 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/parse/field/AbstractFuDocField.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.parse.field; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @Descption 6 | * @date 2022-04-28 22:22:48 7 | */ 8 | public abstract class AbstractFuDocField implements FuDocField { 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/parse/field/FuDocField.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.parse.field; 2 | 3 | import com.intellij.psi.PsiAnnotation; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @Descption 8 | * @date 2022-04-28 22:18:28 9 | */ 10 | public interface FuDocField { 11 | 12 | /** 13 | * 获取字段名称 14 | */ 15 | String getName(); 16 | 17 | 18 | /** 19 | * 获取字段注释 20 | */ 21 | String getComment(); 22 | 23 | 24 | /** 25 | * 获取注解集合 26 | */ 27 | PsiAnnotation[] getAnnotations(); 28 | 29 | 30 | /** 31 | * 是否存在修饰属性 32 | * 33 | * @param name 修饰关键字 例如 static final 34 | * @return true 存在 35 | */ 36 | boolean hasProperty(String name); 37 | 38 | 39 | String getParamType(); 40 | 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/parse/object/ApiDocObjectParser.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.parse.object; 2 | 3 | import com.intellij.psi.PsiType; 4 | import com.wdf.fudoc.apidoc.pojo.bo.ParseObjectBO; 5 | import com.wdf.fudoc.apidoc.pojo.desc.ObjectInfoDesc; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @description 对象解析器 10 | * @date 2022-04-18 20:44:18 11 | */ 12 | public interface ApiDocObjectParser { 13 | 14 | /** 15 | * 排序规则 按从小到大执行 16 | * 17 | * @return 当前解析器的执行顺序 18 | */ 19 | int sort(); 20 | 21 | /** 22 | * 判断是否满足条件解析 23 | * 24 | * @param psiType 需要解析的对象类型 25 | * @return true 可以解析 false 不支持解析该对象 26 | */ 27 | boolean isParse(PsiType psiType); 28 | 29 | 30 | /** 31 | * 解析java对象 32 | * 33 | * @param psiType 对象类型 34 | * @param parseObjectBO 解析对象所需要的参数 35 | * @return 返回解析对象后的一些属性 注解 注释等描述信息 36 | */ 37 | ObjectInfoDesc parse(PsiType psiType, ParseObjectBO parseObjectBO); 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/annotation/DefaultAnnotationData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.annotation; 2 | 3 | import com.wdf.fudoc.apidoc.constant.enumtype.SpringParamAnnotation; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2022-09-27 19:50:56 8 | */ 9 | public class DefaultAnnotationData implements SpringAnnotationData{ 10 | 11 | @Override 12 | public SpringParamAnnotation get() { 13 | return SpringParamAnnotation.NONE; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/annotation/PathVariableData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.annotation; 2 | 3 | import com.wdf.fudoc.apidoc.constant.enumtype.SpringParamAnnotation; 4 | import com.wdf.fudoc.apidoc.pojo.data.AnnotationData; 5 | import lombok.NoArgsConstructor; 6 | import com.wdf.fudoc.util.FuStringUtils; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2022-09-27 18:09:15 11 | */ 12 | @NoArgsConstructor 13 | public class PathVariableData implements SpringAnnotationData { 14 | 15 | private final String value = FuStringUtils.EMPTY; 16 | 17 | private final String name = FuStringUtils.EMPTY; 18 | 19 | private final boolean required = true; 20 | 21 | 22 | public PathVariableData(AnnotationData annotationData) { 23 | } 24 | 25 | @Override 26 | public SpringParamAnnotation get() { 27 | return SpringParamAnnotation.PATH_VARIABLE; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/annotation/RequestBodyData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.annotation; 2 | 3 | import com.wdf.fudoc.apidoc.constant.enumtype.SpringParamAnnotation; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2022-09-27 18:07:29 8 | */ 9 | public class RequestBodyData implements SpringAnnotationData { 10 | 11 | @Override 12 | public SpringParamAnnotation get() { 13 | return SpringParamAnnotation.REQUEST_BODY; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/annotation/RequestParamData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.annotation; 2 | 3 | import com.wdf.fudoc.apidoc.constant.enumtype.SpringParamAnnotation; 4 | import com.wdf.fudoc.apidoc.pojo.data.AnnotationData; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2022-09-27 18:08:09 9 | */ 10 | public class RequestParamData implements SpringAnnotationData { 11 | 12 | 13 | private final String value = ""; 14 | 15 | private final String name = ""; 16 | 17 | private final boolean required = true; 18 | 19 | private final String defaultValue = ""; 20 | 21 | public RequestParamData(AnnotationData annotationData) { 22 | } 23 | 24 | @Override 25 | public SpringParamAnnotation get() { 26 | return SpringParamAnnotation.REQUEST_PARAM; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/annotation/SpringAnnotationData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.annotation; 2 | 3 | import com.wdf.fudoc.apidoc.constant.enumtype.SpringParamAnnotation; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2022-09-27 18:06:19 8 | */ 9 | public interface SpringAnnotationData { 10 | 11 | SpringParamAnnotation get(); 12 | 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/AssembleBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @descption: 组装参数 11 | * @date 2022-05-09 23:30:21 12 | */ 13 | @Getter 14 | @Setter 15 | public class AssembleBO { 16 | 17 | /** 18 | * controller上的url请求地址集合 19 | */ 20 | private List controllerUrlList; 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/CommentLineBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import com.wdf.fudoc.util.FuStringUtils; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @descption: 每一行注释 10 | * @date 2022-04-24 22:58:19 11 | */ 12 | @Getter 13 | @Setter 14 | public class CommentLineBO { 15 | 16 | /** 17 | * 行数(第几行注释) 18 | */ 19 | private int row; 20 | 21 | /** 22 | * 注释tag 23 | */ 24 | private String tag; 25 | 26 | /** 27 | * 注释tag的参数名 28 | */ 29 | private String key; 30 | 31 | /** 32 | * 注释内容 33 | */ 34 | private String content; 35 | 36 | /** 37 | * 注释前缀 38 | */ 39 | private String prefix; 40 | 41 | /** 42 | * 注释后缀 43 | */ 44 | private String suffix; 45 | 46 | @Override 47 | public String toString() { 48 | String tagText = FuStringUtils.isNotBlank(tag) ? "@" + tag : ""; 49 | return this.prefix + tagText + this.content + this.suffix; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/EnumParseBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import com.intellij.psi.PsiParameter; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2022-07-29 17:03:43 10 | */ 11 | @Getter 12 | @Setter 13 | public class EnumParseBO { 14 | 15 | private PsiParameter psiParameter; 16 | 17 | private String type; 18 | 19 | private String name; 20 | 21 | private String value; 22 | 23 | public EnumParseBO(PsiParameter psiParameter, String value) { 24 | this.psiParameter = psiParameter; 25 | this.type = psiParameter.getType().getCanonicalText(); 26 | this.name = psiParameter.getName(); 27 | this.value = value; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/FilterFieldBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2022-08-12 21:49:29 11 | */ 12 | @Getter 13 | @Setter 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class FilterFieldBO { 17 | 18 | /** 19 | * 类名 20 | */ 21 | private String className; 22 | 23 | /** 24 | * 字段名 多个用","号分隔 25 | */ 26 | private String fieldNames; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/MockDataValueBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @Descption mock 数据值对象 11 | * @date 2022-05-18 21:46:58 12 | */ 13 | @Getter 14 | @Setter 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class MockDataValueBO { 18 | 19 | /** 20 | * 参数名称 21 | */ 22 | private String paramName; 23 | 24 | /** 25 | * 参数值 26 | */ 27 | private Object value; 28 | 29 | 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/MockResultBo.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * mock数据结果 8 | * 9 | * @author wangdingfu 10 | * @date 2022-11-16 22:57:20 11 | */ 12 | @Getter 13 | @Setter 14 | public class MockResultBo { 15 | 16 | /** 17 | * 请求参数示例 18 | */ 19 | private String requestExample; 20 | 21 | /** 22 | * 请求参数示例类型 (json|yaml) 23 | */ 24 | private String requestExampleType; 25 | 26 | /** 27 | * 响应参数示例 28 | */ 29 | private String responseExample; 30 | 31 | /** 32 | * 请求结果示例类型 (json|yaml) 33 | */ 34 | private String responseExampleType; 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/PsiClassTypeBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import com.intellij.psi.PsiClass; 4 | import com.intellij.psi.PsiType; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import lombok.NoArgsConstructor; 8 | import lombok.Setter; 9 | 10 | /** 11 | * @author wangdingfu 12 | * @description 13 | * @date 2022-04-19 20:51:25 14 | */ 15 | @Getter 16 | @Setter 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class PsiClassTypeBO { 20 | 21 | private PsiClass psiClass; 22 | 23 | private PsiType psiType; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/RootParamBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import com.wdf.fudoc.apidoc.pojo.annotation.SpringAnnotationData; 4 | import com.wdf.fudoc.apidoc.pojo.data.FuDocParamData; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author wangdingfu 12 | * @date 2022-09-27 17:04:03 13 | */ 14 | @Getter 15 | @Setter 16 | public class RootParamBO { 17 | 18 | 19 | /** 20 | * 当前参数对应标识的注解 21 | */ 22 | private SpringAnnotationData springAnnotationData; 23 | 24 | /** 25 | * 对象解析后的描述信息 26 | */ 27 | private List fuDocParamDataList; 28 | 29 | /** 30 | * mock的请求数据 31 | */ 32 | private String mockData; 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/SettingEnumBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | 7 | /** 8 | * 枚举相关配置 9 | * @author wangdingfu 10 | * @date 2022-08-15 20:41:05 11 | */ 12 | @Getter 13 | @Setter 14 | public class SettingEnumBO { 15 | 16 | /** 17 | * 配置枚举code的属性名 18 | */ 19 | private String code = "code,index,intValue"; 20 | 21 | 22 | /** 23 | * 配置枚举的msg属性名 24 | */ 25 | private String msg = "msg,message,name,desc,view"; 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/SettingValidBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import com.google.common.collect.Lists; 4 | import com.wdf.fudoc.apidoc.constant.enumtype.ValidMessageType; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * valid注解相关配置 12 | * 13 | * @author wangdingfu 14 | * @date 2022-08-15 20:34:13 15 | */ 16 | @Getter 17 | @Setter 18 | public class SettingValidBO { 19 | 20 | /** 21 | * 读取message内容的配置 22 | */ 23 | private List message = 24 | Lists.newArrayList(new SettingValidMessageBO(ValidMessageType.REPLACE.getMsg(), ValidMessageType.REPLACE.getDefaultValue())); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/bo/SettingValidMessageBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.bo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | /** 9 | * Valid注解message属性相关配置 10 | * 11 | * @author wangdingfu 12 | * @date 2022-08-15 20:34:48 13 | */ 14 | @Getter 15 | @Setter 16 | @NoArgsConstructor 17 | @AllArgsConstructor 18 | public class SettingValidMessageBO { 19 | 20 | /** 21 | * 类型 22 | */ 23 | private String type; 24 | 25 | /** 26 | * 值 27 | */ 28 | private String value; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/AnnotationDataMap.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @descption: 注解map公共对象 9 | * @date 2022-04-05 22:08:40 10 | */ 11 | @Getter 12 | @Setter 13 | public class AnnotationDataMap { 14 | 15 | 16 | 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/AnnotationValueData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | import com.wdf.fudoc.apidoc.constant.enumtype.AnnotationValueType; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @Descption 注解值 10 | * @date 2022-05-11 21:30:13 11 | */ 12 | @Getter 13 | @Setter 14 | public class AnnotationValueData { 15 | 16 | /** 17 | * 值类型 18 | */ 19 | private AnnotationValueType valueType; 20 | 21 | public AnnotationValueData(AnnotationValueType valueType) { 22 | this.valueType = valueType; 23 | } 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/ApiDocData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @descption: 生成API接口文档的数据 11 | * @author wangdingfu 12 | * @date 2022-04-05 19:58:19 13 | */ 14 | @Getter 15 | @Setter 16 | public class ApiDocData extends AnnotationDataMap{ 17 | 18 | /** 19 | * 当前文档标题 20 | */ 21 | private String title; 22 | 23 | /** 24 | * 解析后的方法属性数据集合 25 | */ 26 | private List apiDocMethodDataList; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/ApiDocMethodData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @descption: API接口方法级别属性数据 10 | * @author wangdingfu 11 | * @date 2022-04-05 21:40:45 12 | */ 13 | @Getter 14 | @Setter 15 | public class ApiDocMethodData extends AnnotationDataMap{ 16 | 17 | /** 18 | * 请求类型 19 | */ 20 | private String requestType; 21 | 22 | /** 23 | * 请求参数 24 | */ 25 | private List requestList; 26 | 27 | 28 | /** 29 | * 响应参数 30 | */ 31 | private ApiDocObjectData response; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/ApiDocObjectData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @descption: 参数字段属性数据对象 11 | * @date 2022-04-05 22:10:26 12 | */ 13 | @Getter 14 | @Setter 15 | public class ApiDocObjectData extends AnnotationDataMap { 16 | 17 | /** 18 | * 字段类型 19 | */ 20 | private String type; 21 | 22 | /** 23 | * 页面显示的类型 24 | */ 25 | private String typeView; 26 | 27 | /** 28 | * 字段名称 29 | */ 30 | private String name; 31 | 32 | /** 33 | * 字段注释 34 | */ 35 | private String docText; 36 | 37 | /** 38 | * 是否为不处理对象 39 | */ 40 | private boolean isFilterObject; 41 | 42 | /** 43 | * 子属性字段集合(当前对象不为基本对象 且有自己属性字段时) 44 | */ 45 | private List childList; 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/CommentTagData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | import com.intellij.psi.PsiElement; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @Description 注释tag内容对象 10 | * @date 2022-08-05 22:16:06 11 | */ 12 | @Getter 13 | @Setter 14 | public class CommentTagData { 15 | 16 | /** 17 | * 参数名 18 | */ 19 | private String name; 20 | 21 | /** 22 | * 值 23 | */ 24 | private String value; 25 | 26 | /** 27 | * 节点对象 28 | */ 29 | private PsiElement psiElement; 30 | 31 | public CommentTagData() { 32 | } 33 | 34 | public CommentTagData(String name, String value) { 35 | this.name = name; 36 | this.value = value; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/CommonItemData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | import com.wdf.fudoc.apidoc.constant.enumtype.ContentType; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2022-09-27 17:23:09 12 | */ 13 | @Getter 14 | @Setter 15 | public class CommonItemData { 16 | 17 | /** 18 | * 接口唯一标识 19 | */ 20 | private String apiKey; 21 | 22 | /** 23 | * 接口标题 24 | */ 25 | private String title; 26 | 27 | 28 | /** 29 | * 接口详情信息 30 | */ 31 | private String detailInfo; 32 | 33 | /** 34 | * 接口请求地址 35 | */ 36 | private List urlList; 37 | 38 | /** 39 | * 接口请求类型 40 | */ 41 | private String requestType; 42 | 43 | /** 44 | * 请求内容类型 45 | */ 46 | private ContentType contentType; 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/FuApiDocData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 该类的数据用于渲染接口文档,即当前类已经存储了接口文档中所需要的所有数据 10 | * 11 | * @author wangdingfu 12 | * @descption: FuApiDoc接口文档对象 13 | * @date 2022-05-08 23:02:36 14 | */ 15 | @Getter 16 | @Setter 17 | public class FuApiDocData { 18 | 19 | /** 20 | * 文档标题 21 | */ 22 | private String title; 23 | 24 | 25 | /** 26 | * 接口列表集合 27 | */ 28 | private List itemList; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/FuDocEnumData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2022-07-29 18:11:13 11 | */ 12 | @Getter 13 | @Setter 14 | public class FuDocEnumData { 15 | 16 | /** 17 | * 枚举标题 18 | */ 19 | private String title; 20 | 21 | /** 22 | * 枚举名称 23 | */ 24 | private String enumName; 25 | 26 | /** 27 | * 枚举明细 28 | */ 29 | private List itemList; 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/FuDocEnumItemData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * 枚举解析出来的值 9 | * @author wangdingfu 10 | * @date 2022-07-29 16:05:05 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | public class FuDocEnumItemData { 16 | 17 | /** 18 | * 枚举编码 19 | */ 20 | private String code; 21 | 22 | /** 23 | * 枚举描述信息 24 | */ 25 | private String msg; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/ParamRootData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data; 2 | 3 | import com.intellij.psi.PsiParameter; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @Description 根节点参数数据对象 12 | * @date 2022-06-26 21:33:33 13 | */ 14 | @Getter 15 | @Setter 16 | public class ParamRootData { 17 | 18 | /** 19 | * 参数集合 20 | * key:参数唯一标识(包路径) value:参数对象 21 | */ 22 | private Map psiParameterMap; 23 | 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/annotation/AnnotationClassValueData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data.annotation; 2 | 3 | import com.intellij.lang.jvm.annotation.JvmAnnotationClassValue; 4 | import com.wdf.fudoc.apidoc.constant.enumtype.AnnotationValueType; 5 | import com.wdf.fudoc.apidoc.pojo.data.AnnotationValueData; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @Descption 注解class类型值(注解值为class) 12 | * @date 2022-06-27 20:07:36 13 | */ 14 | @Getter 15 | @Setter 16 | public class AnnotationClassValueData extends AnnotationValueData { 17 | 18 | /** 19 | * class包路径 20 | */ 21 | private String className; 22 | 23 | private JvmAnnotationClassValue jvmAnnotationClassValue; 24 | 25 | public AnnotationClassValueData(AnnotationValueType valueType) { 26 | super(valueType); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/data/annotation/AnnotationNestedValueData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.data.annotation; 2 | 3 | import com.wdf.fudoc.apidoc.constant.enumtype.AnnotationValueType; 4 | import com.wdf.fudoc.apidoc.pojo.data.AnnotationValueData; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @Descption 注解类型值(即值的类型为注解) 11 | * @date 2022-06-27 20:17:39 12 | */ 13 | @Getter 14 | @Setter 15 | public class AnnotationNestedValueData extends AnnotationValueData { 16 | 17 | public AnnotationNestedValueData(AnnotationValueType valueType) { 18 | super(valueType); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/desc/ClassInfoDesc.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.desc; 2 | 3 | import com.intellij.psi.PsiClass; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @descption: 类信息描述 12 | * @date 2022-05-08 22:21:40 13 | */ 14 | @Getter 15 | @Setter 16 | public class ClassInfoDesc extends BaseInfoDesc { 17 | 18 | /** 19 | * 类ID 20 | */ 21 | private String classId; 22 | 23 | private PsiClass psiClass; 24 | 25 | /** 26 | * 方法集合 27 | */ 28 | private List methodList; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/pojo/desc/MethodInfoDesc.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.pojo.desc; 2 | 3 | import com.intellij.psi.PsiMethod; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @descption: 方法信息描述 12 | * @date 2022-05-08 22:22:20 13 | */ 14 | @Getter 15 | @Setter 16 | public class MethodInfoDesc extends BaseInfoDesc { 17 | 18 | /** 19 | * 方法唯一标识 20 | */ 21 | private String methodId; 22 | 23 | /** 24 | * 用于导航该方法 25 | */ 26 | private PsiMethod psiMethod; 27 | 28 | /** 29 | * 请求参数集合 30 | */ 31 | private List requestList; 32 | 33 | /** 34 | * 返回参数 35 | */ 36 | private ObjectInfoDesc response; 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/service/FuDocService.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.service; 2 | 3 | import com.intellij.psi.PsiClass; 4 | import com.wdf.fudoc.apidoc.pojo.context.FuDocContext; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2022-07-18 20:45:00 9 | */ 10 | public interface FuDocService { 11 | 12 | /** 13 | * 生成对应类型的fuDoc 14 | * 15 | * @return markdown格式的接口文档内容 16 | */ 17 | String genFuDocContent(FuDocContext fuDocContext, PsiClass psiClass); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/data/ApiFoxProjectTableData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.data; 2 | 3 | import com.wdf.fudoc.apidoc.sync.dto.ApiCategoryDTO; 4 | import com.wdf.fudoc.components.bo.TreePathBO; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | import java.io.Serializable; 9 | import java.util.List; 10 | 11 | /** 12 | * @author wangdingfu 13 | * @date 2023-07-01 15:00:59 14 | */ 15 | @Getter 16 | @Setter 17 | public class ApiFoxProjectTableData implements Serializable { 18 | 19 | /** 20 | * 是否选中 21 | */ 22 | private Boolean select = true; 23 | 24 | /** 25 | * 项目ID-接口文档系统 26 | */ 27 | private String projectId; 28 | 29 | /** 30 | * 项目名称 31 | */ 32 | private String projectName; 33 | 34 | /** 35 | * 项目范围 36 | */ 37 | private String applicationName; 38 | 39 | /** 40 | * 分类集合 41 | */ 42 | private String categories; 43 | 44 | /** 45 | * 是否最近同步过 46 | */ 47 | private boolean isLatest; 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/data/ApiSystemProjectConfigData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.data; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | /** 10 | * 第三方接口文档系统项目配置 11 | * 12 | * @author wangdingfu 13 | * @date 2023-01-01 13:40:07 14 | */ 15 | @Getter 16 | @Setter 17 | public class ApiSystemProjectConfigData { 18 | 19 | /** 20 | * 分组ID 21 | */ 22 | private String groupId; 23 | 24 | /** 25 | * 第三方接口文档系统项目id 26 | */ 27 | private String projectId; 28 | 29 | /** 30 | * 第三方接口文档系统项目名称 31 | */ 32 | private String projectName; 33 | 34 | 35 | /** 36 | * 自己代码中的java module集合(标识这些module下的接口文档都归属到该项目下) 37 | */ 38 | private List moduleIdList; 39 | 40 | /** 41 | * 接口挂载的菜单和项目接口的映射关系 42 | * key:接口挂载的菜单全路径 value:接口所属的目录集合 43 | */ 44 | private Map> apiCategoryMapping; 45 | 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/data/ShowDocProjectTableData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.data; 2 | 3 | import com.wdf.fudoc.components.bo.TreePathBO; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2023-07-05 19:00:55 12 | */ 13 | @Getter 14 | @Setter 15 | public class ShowDocProjectTableData implements Serializable { 16 | 17 | /** 18 | * 是否选中 19 | */ 20 | private Boolean select = true; 21 | 22 | /** 23 | * 项目token 24 | */ 25 | private String apiToken; 26 | 27 | /** 28 | * api key 29 | */ 30 | private String apiKey; 31 | 32 | /** 33 | * 项目名称 34 | */ 35 | private String projectName; 36 | 37 | /** 38 | * 项目范围 39 | */ 40 | private String applicationName; 41 | 42 | /** 43 | * 分类集合 44 | */ 45 | private String categories; 46 | 47 | /** 48 | * 是否最近同步过 49 | */ 50 | private boolean isLatest; 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/data/SyncApiData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.data; 2 | 3 | import com.wdf.fudoc.apidoc.pojo.data.FuDocItemData; 4 | import com.wdf.fudoc.apidoc.sync.dto.ApiTreeKeyDTO; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import lombok.NoArgsConstructor; 8 | import lombok.Setter; 9 | 10 | 11 | /** 12 | * 同步接口用户选择tab框数据 13 | * 14 | * @author wangdingfu 15 | * @date 2023-01-01 14:04:33 16 | */ 17 | @Getter 18 | @Setter 19 | @NoArgsConstructor 20 | @AllArgsConstructor 21 | public class SyncApiData extends ApiTreeKeyDTO { 22 | 23 | /** 24 | * 需要同步的接口 25 | */ 26 | private FuDocItemData fuDocItemData; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/data/SyncApiRecordData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.data; 2 | 3 | import com.wdf.fudoc.apidoc.sync.dto.ApiCategoryDTO; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * 已经同步过的接口文档记录 11 | * 12 | * @author wangdingfu 13 | * @date 2023-01-01 17:52:27 14 | */ 15 | @Getter 16 | @Setter 17 | public class SyncApiRecordData implements Serializable { 18 | 19 | /** 20 | * 接口地址 21 | */ 22 | private String apiUrl; 23 | /** 24 | * 项目ID 25 | */ 26 | private String projectToken; 27 | 28 | /** 29 | * 项目ID 30 | */ 31 | private String projectId; 32 | 33 | /** 34 | * 项目名称 35 | */ 36 | private String projectName; 37 | 38 | /** 39 | * 接口分类 40 | */ 41 | private ApiCategoryDTO category; 42 | 43 | /** 44 | * 同步时间 45 | */ 46 | private String syncTime; 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/data/SyncApiTableData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.data; 2 | 3 | 4 | import com.wdf.fudoc.apidoc.pojo.data.FuDocItemData; 5 | import com.wdf.fudoc.apidoc.sync.dto.ApiTreeKeyDTO; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | 9 | /** 10 | * 同步接口表格数据对象 11 | * 12 | * @author wangdingfu 13 | * @date 2023-01-01 18:22:16 14 | */ 15 | @Getter 16 | @Setter 17 | public class SyncApiTableData extends ApiTreeKeyDTO { 18 | 19 | private Boolean select; 20 | 21 | /** 22 | * 接口唯一标识 23 | */ 24 | private String apiKey; 25 | 26 | /** 27 | * 接口名称 28 | */ 29 | private String apiName; 30 | 31 | /** 32 | * 接口地址 33 | */ 34 | private String apiUrl; 35 | 36 | /** 37 | * 接口文档数据 38 | */ 39 | private FuDocItemData apiData; 40 | 41 | /** 42 | * 同步状态 43 | */ 44 | private String syncStatus; 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/data/YApiProjectTableData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.data; 2 | 3 | import com.google.common.collect.Lists; 4 | import com.wdf.fudoc.components.bo.TreePathBO; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | import java.io.Serializable; 9 | import java.util.List; 10 | 11 | /** 12 | * yapi项目配置 13 | * 14 | * @author wangdingfu 15 | * @date 2023-01-07 00:00:11 16 | */ 17 | @Getter 18 | @Setter 19 | public class YApiProjectTableData implements Serializable { 20 | 21 | /** 22 | * 是否选中 23 | */ 24 | private Boolean select; 25 | 26 | /** 27 | * 项目token-接口文档系统 28 | */ 29 | private String projectToken; 30 | 31 | /** 32 | * 项目ID-接口文档系统 33 | */ 34 | private String projectId; 35 | 36 | /** 37 | * 项目名称-接口文档系统 38 | */ 39 | private String projectName; 40 | 41 | 42 | /** 43 | * 项目范围 44 | */ 45 | private String applicationName; 46 | 47 | /** 48 | * 是否最近同步过 49 | */ 50 | private boolean isLatest; 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/data/YapiProjectConfigData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.data; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * Yapi项目配置 10 | * 11 | * @author wangdingfu 12 | * @date 2023-01-05 13:33:11 13 | */ 14 | @Getter 15 | @Setter 16 | public class YapiProjectConfigData { 17 | 18 | /** 19 | * 项目token 20 | */ 21 | private String projectToken; 22 | 23 | /** 24 | * 分组id 25 | */ 26 | private String groupId; 27 | 28 | /** 29 | * 分组名称 30 | */ 31 | private String groupName; 32 | 33 | /** 34 | * 项目id 35 | */ 36 | private String projectId; 37 | 38 | /** 39 | * 项目名称 40 | */ 41 | private String projectName; 42 | 43 | /** 44 | * 对应代码中的module模块集合(表示将这些module的接口同步到Yapi的这个项目中) 45 | */ 46 | private List moduleIdList; 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/AddApiCategoryDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-01-06 01:04:09 9 | */ 10 | @Getter 11 | @Setter 12 | public class AddApiCategoryDTO { 13 | 14 | /** 15 | * 项目id 16 | */ 17 | private String projectId; 18 | 19 | /** 20 | * 项目名称 21 | */ 22 | private String projectName; 23 | 24 | /** 25 | * 项目token 26 | */ 27 | private String projectToken; 28 | 29 | /** 30 | * 分类名称 31 | */ 32 | private String categoryName; 33 | 34 | /** 35 | * 分类描述 36 | */ 37 | private String categoryDesc; 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/ApiFoxDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-06-13 09:58:06 9 | */ 10 | @Getter 11 | @Setter 12 | public class ApiFoxDTO { 13 | 14 | private String importFormat; 15 | 16 | private String apiOverwriteMode; 17 | 18 | private OpenApiDTO data; 19 | 20 | private boolean syncApiFolder; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/ApiFoxResult.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-07-05 17:04:59 9 | */ 10 | @Getter 11 | @Setter 12 | public class ApiFoxResult { 13 | 14 | private Boolean success; 15 | 16 | private String errorCode; 17 | 18 | private String errorMessage; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/ApiGroupDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 项目分组对象(一个分组会有多个项目) 10 | * 11 | * @author wangdingfu 12 | * @date 2023-01-01 18:41:57 13 | */ 14 | @Getter 15 | @Setter 16 | public class ApiGroupDTO { 17 | 18 | /** 19 | * 分组ID 20 | */ 21 | private String groupId; 22 | 23 | /** 24 | * 分组名称 25 | */ 26 | private String groupName; 27 | 28 | /** 29 | * 项目集合 30 | */ 31 | private List apiProjectList; 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/ApiStructureTreeDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * api的层级结构树 10 | * 11 | * @author wangdingfu 12 | * @date 2023-01-01 21:01:59 13 | */ 14 | @Getter 15 | @Setter 16 | public class ApiStructureTreeDTO { 17 | 18 | /** 19 | * 项目集合 20 | */ 21 | private List apiProjectList; 22 | 23 | 24 | /** 25 | * 当前项目的配置 26 | */ 27 | private ApiProjectDTO current; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/ApiTreeKeyDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-01-01 22:30:51 9 | */ 10 | @Getter 11 | @Setter 12 | public class ApiTreeKeyDTO { 13 | 14 | /** 15 | * 分组id 16 | */ 17 | private String groupId; 18 | 19 | /** 20 | * 分组名称 21 | */ 22 | private String groupName; 23 | 24 | /** 25 | * 项目id 26 | */ 27 | private String projectId; 28 | 29 | /** 30 | * 项目名称 31 | */ 32 | private String projectName; 33 | 34 | /** 35 | * 接口分类id 36 | */ 37 | private String categoryId; 38 | 39 | /** 40 | * 接口分类名称 41 | */ 42 | private String categoryName; 43 | 44 | /** 45 | * 项目token 46 | */ 47 | private String projectToken; 48 | 49 | 50 | public String getApiTreeKey() { 51 | return this.groupName + ":" + this.projectName + "" + this.categoryName; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/JsonSchemaProperties.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2023-01-10 13:36:46 8 | */ 9 | public class JsonSchemaProperties { 10 | 11 | private Map properties; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/OpenApiComponents.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-06-12 18:28:41 11 | */ 12 | @Getter 13 | @Setter 14 | public class OpenApiComponents { 15 | 16 | /** 17 | * 对象的schema 18 | */ 19 | private Map schemas; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/OpenApiContentDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-06-13 10:30:35 9 | */ 10 | @Getter 11 | @Setter 12 | public class OpenApiContentDTO { 13 | 14 | private YApiJsonSchema schema; 15 | 16 | private String example; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/OpenApiDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * openApi文档格式对象 10 | * 11 | * @author wangdingfu 12 | * @date 2023-06-12 18:09:18 13 | */ 14 | @Getter 15 | @Setter 16 | public class OpenApiDTO { 17 | 18 | /** 19 | * 接口集合 20 | * key:接口地址 value: (key:请求类型(GET/POST) value:接口对象) 21 | */ 22 | private Map> paths; 23 | 24 | /** 25 | * 数据模型 26 | */ 27 | private OpenApiComponents components; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/OpenApiParameterItemDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-06-12 18:14:39 9 | */ 10 | @Getter 11 | @Setter 12 | public class OpenApiParameterItemDTO { 13 | 14 | /** 15 | * 参数名称 16 | */ 17 | private String name; 18 | 19 | /** 20 | * 参数位置,可以是 path、query、header、cookie 21 | */ 22 | private String in; 23 | 24 | /** 25 | * 参数描述 26 | */ 27 | private String description; 28 | 29 | /** 30 | * 是否必填 31 | */ 32 | private boolean required; 33 | 34 | /** 35 | * 参数示例 36 | */ 37 | private String example; 38 | 39 | /** 40 | * 参数格式 41 | */ 42 | private YApiJsonSchema schema; 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/OpenApiRequestBody.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-06-12 18:15:24 11 | */ 12 | @Getter 13 | @Setter 14 | public class OpenApiRequestBody { 15 | 16 | /** 17 | * 接口请求body 18 | */ 19 | private Map content; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/OpenApiResponseDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-06-13 18:42:06 11 | */ 12 | @Getter 13 | @Setter 14 | public class OpenApiResponseDTO { 15 | 16 | /** 17 | * 响应描述 18 | */ 19 | private String description; 20 | 21 | /** 22 | * 接口请求body 23 | */ 24 | private Map content; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/OpenApiSchema.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-06-12 18:29:03 11 | */ 12 | @Getter 13 | @Setter 14 | @JsonInclude(JsonInclude.Include.NON_EMPTY) 15 | public class OpenApiSchema extends YApiJsonSchema { 16 | 17 | @JsonProperty("$ref") 18 | private String ref; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/ShowDocDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-07-05 20:16:01 10 | */ 11 | @Getter 12 | @Setter 13 | public class ShowDocDTO { 14 | 15 | @JsonProperty("api_key") 16 | private String apiKey; 17 | 18 | @JsonProperty("api_token") 19 | private String apiToken; 20 | 21 | @JsonProperty("cat_name") 22 | private String categoryName; 23 | 24 | @JsonProperty("page_title") 25 | private String title; 26 | 27 | @JsonProperty("page_content") 28 | private String content; 29 | 30 | @JsonProperty("s_number") 31 | private Integer sort; 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/ShowDocResult.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-07-05 20:18:03 10 | */ 11 | @Getter 12 | @Setter 13 | public class ShowDocResult { 14 | @JsonProperty("error_code") 15 | private String code; 16 | 17 | private Object data; 18 | 19 | @JsonProperty("error_message") 20 | private String message; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/YApiBaseRes.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * YApi公共返回结果对象 8 | * 9 | * @author wangdingfu 10 | * @date 2023-01-06 01:16:37 11 | */ 12 | @Getter 13 | @Setter 14 | public class YApiBaseRes { 15 | 16 | /** 17 | * 错误码 18 | */ 19 | private int errcode; 20 | 21 | /** 22 | * 错误消息 23 | */ 24 | private String errmsg; 25 | 26 | /** 27 | * 响应数据 28 | */ 29 | private Object data; 30 | 31 | 32 | public boolean success() { 33 | return this.errcode == 0; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/YApiCreateCategoryDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-01-06 00:58:11 10 | */ 11 | @Getter 12 | @Setter 13 | public class YApiCreateCategoryDTO { 14 | 15 | /** 16 | * 项目token 17 | */ 18 | private String token; 19 | 20 | 21 | /** 22 | * 项目ID 23 | */ 24 | @JsonProperty("project_id") 25 | private Long projectId; 26 | 27 | 28 | /** 29 | * 分类id 30 | */ 31 | @JsonProperty("_id") 32 | private Integer catId; 33 | 34 | /** 35 | * 分类名称 36 | */ 37 | private String name; 38 | 39 | /** 40 | * 分类描述 41 | */ 42 | private String desc; 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/YApiHeaderDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * YApi请求Header 8 | * 9 | * @author wangdingfu 10 | * @date 2023-01-05 15:22:37 11 | */ 12 | @Getter 13 | @Setter 14 | public class YApiHeaderDTO { 15 | 16 | /** 17 | * 请求头名称 18 | */ 19 | private String name; 20 | 21 | /** 22 | * 请求头value 23 | */ 24 | private String value; 25 | 26 | /** 27 | * 请求头示例 28 | */ 29 | private String example; 30 | 31 | /** 32 | * 请求头描述 33 | */ 34 | private String desc; 35 | 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/YApiMock.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * YApi mock数据 9 | * @author wangdingfu 10 | * @date 2023-01-05 17:14:40 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | public class YApiMock { 16 | 17 | /** 18 | * mock数据 19 | */ 20 | private String mock; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/YApiParamDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * YApi请求参数对象 8 | * 9 | * @author wangdingfu 10 | * @date 2023-01-05 15:22:11 11 | */ 12 | @Getter 13 | @Setter 14 | public class YApiParamDTO { 15 | 16 | /** 17 | * 参数名 18 | */ 19 | private String name; 20 | 21 | /** 22 | * 参数类型 23 | */ 24 | private String type; 25 | 26 | /** 27 | * 参数实例 28 | */ 29 | private String example; 30 | 31 | /** 32 | * 参数描述 33 | */ 34 | private String desc; 35 | 36 | /** 37 | * 枚举: 1,0 38 | */ 39 | private String required; 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/YApiProjectInfoDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-01-07 02:43:25 10 | */ 11 | @Getter 12 | @Setter 13 | public class YApiProjectInfoDTO { 14 | 15 | 16 | @JsonProperty("group_id") 17 | private Integer groupId; 18 | 19 | @JsonProperty("_id") 20 | private Integer projectId; 21 | 22 | @JsonProperty("name") 23 | private String projectName; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/dto/YApiResultDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * YApi返回的结果 8 | * 9 | * @author wangdingfu 10 | * @date 2023-01-09 17:35:46 11 | */ 12 | @Getter 13 | @Setter 14 | public class YApiResultDTO { 15 | 16 | /** 17 | * 1-成功 18 | */ 19 | private Integer ok; 20 | 21 | /** 22 | * 1-编辑成功 23 | */ 24 | private Integer nModified; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/service/ApiFoxService.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.service; 2 | 3 | import com.wdf.fudoc.apidoc.sync.data.ApiFoxConfigData; 4 | import com.wdf.fudoc.apidoc.sync.dto.ApiFoxDTO; 5 | import com.wdf.fudoc.apidoc.sync.dto.ApiProjectDTO; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-06-13 17:14:49 10 | */ 11 | public interface ApiFoxService { 12 | 13 | /** 14 | * 同步API至ApiFox系统 15 | * 16 | * @param apiFoxDTO 同步参数 17 | * @param apiFoxConfigData 配置数据 18 | */ 19 | String syncApi(ApiFoxDTO apiFoxDTO, ApiProjectDTO apiProjectDTO, ApiFoxConfigData apiFoxConfigData); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/service/ShowDocService.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.service; 2 | 3 | import com.wdf.fudoc.apidoc.sync.data.ApiFoxConfigData; 4 | import com.wdf.fudoc.apidoc.sync.data.ShowDocConfigData; 5 | import com.wdf.fudoc.apidoc.sync.dto.ApiProjectDTO; 6 | import com.wdf.fudoc.apidoc.sync.dto.ShowDocDTO; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-07-05 20:13:02 11 | */ 12 | public interface ShowDocService { 13 | 14 | 15 | String syncApi(ShowDocDTO showDocDTO, ShowDocConfigData showDocConfigData); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/strategy/SyncCategory.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.strategy; 2 | 3 | import com.wdf.fudoc.apidoc.sync.data.BaseSyncConfigData; 4 | import com.wdf.fudoc.apidoc.sync.dto.ApiCategoryDTO; 5 | import com.wdf.fudoc.apidoc.sync.dto.ApiProjectDTO; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2023-06-12 22:53:05 12 | */ 13 | public interface SyncCategory { 14 | 15 | /** 16 | * 创建分类 17 | * 18 | * @return 分类对象 19 | */ 20 | ApiCategoryDTO createCategory(BaseSyncConfigData configData, ApiProjectDTO apiProjectDTO, String categoryName); 21 | 22 | 23 | /** 24 | * 分类集合 25 | * 26 | * @param apiProjectDTO 项目名称 27 | * @param configData 配置数据 28 | * @return 第三方接口文档系统的接口分类集合 29 | */ 30 | List categoryList(ApiProjectDTO apiProjectDTO, BaseSyncConfigData configData); 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/sync/strategy/SyncStrategyFactory.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.sync.strategy; 2 | 3 | import com.wdf.fudoc.apidoc.constant.enumtype.ApiDocSystem; 4 | import com.wdf.fudoc.common.ServiceHelper; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-01-08 23:28:34 9 | */ 10 | public class SyncStrategyFactory { 11 | 12 | public static SyncCategory getInstance(String apiSystem) { 13 | if (ApiDocSystem.YAPI.getCode().equals(apiSystem)) { 14 | return ServiceHelper.getService(SyncToYApiStrategy.class); 15 | } 16 | return null; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/view/SyncApiRecordView.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.view; 2 | 3 | import com.wdf.fudoc.components.FuTableComponent; 4 | 5 | import javax.swing.*; 6 | 7 | /** 8 | * api同步记录显示 9 | * 10 | * @author wangdingfu 11 | * @date 2023-01-19 14:52:37 12 | */ 13 | public class SyncApiRecordView { 14 | 15 | /** 16 | * 根面板 17 | */ 18 | private JPanel rootPanel; 19 | 20 | 21 | public SyncApiRecordView() { 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/apidoc/view/SyncApiView.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.apidoc.view; 2 | 3 | import com.intellij.openapi.project.Project; 4 | import com.intellij.openapi.ui.DialogWrapper; 5 | import com.wdf.fudoc.apidoc.sync.data.SyncApiTableData; 6 | import com.wdf.fudoc.components.FuTableComponent; 7 | import lombok.Getter; 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | import javax.swing.*; 11 | import java.util.List; 12 | 13 | /** 14 | * 同步接口至第三方接口文档视图 15 | * 16 | * @author wangdingfu 17 | * @date 2023-01-01 18:17:57 18 | */ 19 | public class SyncApiView extends DialogWrapper { 20 | 21 | @Getter 22 | private List tableDataList; 23 | 24 | 25 | public FuTableComponent fuTableComponent; 26 | 27 | 28 | public SyncApiView(@Nullable Project project) { 29 | super(project, true); 30 | } 31 | 32 | @Override 33 | protected @Nullable JComponent createCenterPanel() { 34 | return null; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/FuDataTab.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-06-08 22:39:12 6 | */ 7 | public interface FuDataTab extends FuTab { 8 | 9 | void initData(T data); 10 | 11 | void saveData(T data); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/FuTab.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common; 2 | 3 | import com.intellij.openapi.Disposable; 4 | import com.intellij.ui.tabs.TabInfo; 5 | import com.intellij.ui.tabs.TabsListener; 6 | import com.wdf.fudoc.components.bo.TabActionBO; 7 | 8 | import java.util.Map; 9 | 10 | /** 11 | * [Fu Tab]接口 需要返回一个tab标签页 12 | * 13 | * @author wangdingfu 14 | * @date 2022-09-17 20:49:35 15 | */ 16 | public interface FuTab extends TabsListener { 17 | 18 | /** 19 | * 获取tab 20 | */ 21 | TabInfo getTabInfo(); 22 | 23 | 24 | /** 25 | * 重置请求参数 26 | * 27 | * @param param 请求参数 28 | */ 29 | default void resetParams(Map param) { 30 | 31 | } 32 | 33 | 34 | /** 35 | * tab右侧工具栏切换事件 36 | * @param tabActionBO 切换对象 37 | */ 38 | default void rightActionChange(TabActionBO tabActionBO,Boolean isSelect){ 39 | 40 | } 41 | 42 | 43 | /** 44 | * 离开当前tab 45 | */ 46 | default void moveOff(){ 47 | 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/ServiceHelper.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common; 2 | 3 | import com.intellij.openapi.application.ApplicationManager; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @descption: 获取Service帮助类 8 | * @date 2022-05-30 23:06:39 9 | */ 10 | public class ServiceHelper { 11 | 12 | 13 | /** 14 | * 从应用中获取service 15 | * 16 | * @param clazz service clazz 17 | * @param service类型 18 | * @return service实例 19 | */ 20 | public static T getService(Class clazz) { 21 | return ApplicationManager.getApplication().getService(clazz); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/base/BaseIcon.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.base; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import javax.swing.*; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-07-21 17:51:17 11 | */ 12 | @Getter 13 | @Setter 14 | public class BaseIcon { 15 | 16 | /** 17 | * 图标 18 | */ 19 | private Icon icon; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/base/FuFunction.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.base; 2 | 3 | import java.io.Serializable; 4 | import java.util.function.Function; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-07-12 21:50:38 9 | */ 10 | @FunctionalInterface 11 | public interface FuFunction extends Function, Serializable { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/base/KeyValueBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.base; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-01-09 18:38:19 9 | */ 10 | @Getter 11 | @Setter 12 | public class KeyValueBO { 13 | 14 | private String key; 15 | 16 | private String value; 17 | 18 | public KeyValueBO(String key, String value) { 19 | this.key = key; 20 | this.value = value; 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return this.value; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/constant/ApiUrl.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.constant; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-01-12 22:03:49 6 | */ 7 | public interface ApiUrl { 8 | /** 9 | * ping 10 | */ 11 | String PLUGIN_PING_API_URL = "/fu_doc_plugin/ping"; 12 | /** 13 | * 获取插件信息 14 | */ 15 | String PLUGIN_INFO_API_URL = "/fu_doc_plugin/info"; 16 | /** 17 | * 已读公告 18 | */ 19 | String SEND_IS_READ_API_URL = "/fu_doc_plugin/confirm"; 20 | 21 | 22 | String ACCESS_TOKEN = "/fu_doc_plugin/access-token"; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/constant/FuConsoleConstants.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.constant; 2 | 3 | import com.wdf.fudoc.util.FuStringUtils; 4 | 5 | import java.util.Objects; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-07-14 13:54:13 10 | */ 11 | public interface FuConsoleConstants { 12 | 13 | String LINE = "----------------------------------------------------"; 14 | 15 | 16 | String START = LINE + " [START]"; 17 | String END = LINE + " [END]"; 18 | 19 | static String lineContent(String content) { 20 | if (Objects.isNull(content)) { 21 | content = FuStringUtils.EMPTY; 22 | } 23 | return " ".repeat((LINE.length() - content.length()) / 2) + content; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/constant/PathConstants.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.constant; 2 | 3 | import com.wdf.fudoc.util.FuStringUtils; 4 | 5 | import javax.swing.filechooser.FileSystemView; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2022-11-24 21:48:24 10 | */ 11 | public class PathConstants { 12 | 13 | /** 14 | * 桌面路径 15 | */ 16 | public static final String DESKTOP_PATH = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath(); 17 | 18 | public static String desktopPath() { 19 | String property = System.getProperty("os.name"); 20 | if (FuStringUtils.isBlank(property) || property.toLowerCase().startsWith("win")) { 21 | return DESKTOP_PATH; 22 | } 23 | return DESKTOP_PATH + "/Desktop"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/constant/TipInfoConstants.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.constant; 2 | 3 | import cn.hutool.core.util.RandomUtil; 4 | import com.google.common.collect.Lists; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2022-10-19 11:05:25 11 | */ 12 | public class TipInfoConstants { 13 | 14 | private static final List TIP_INFO = Lists.newArrayList( 15 | "按下esc键可以快速退出当前窗口", 16 | "发送请求后会自动保存当前请求记录", 17 | "这是一条假消息", 18 | "【Fu Doc】需要您的支持. 快来Github或Gitee赏个Star吧" 19 | ); 20 | 21 | 22 | /** 23 | * 随机获取一条消息 24 | */ 25 | public static String get() { 26 | return TIP_INFO.get(RandomUtil.randomInt(0, TIP_INFO.size())); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/datakey/FuDocDataKey.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.datakey; 2 | 3 | import com.intellij.openapi.actionSystem.DataKey; 4 | import com.wdf.fudoc.request.view.toolwindow.FuRequestWindow; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2022-12-05 22:45:48 9 | */ 10 | public interface FuDocDataKey { 11 | 12 | DataKey WINDOW_PANE = DataKey.create("FuRequestWindow"); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/enumtype/ControllerAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.enumtype; 2 | 3 | import com.wdf.fudoc.apidoc.constant.AnnotationConstants; 4 | import lombok.Getter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-05-26 13:46:07 9 | */ 10 | @Getter 11 | public enum ControllerAnnotation { 12 | 13 | CONTROLLER("Controller", AnnotationConstants.CONTROLLER), 14 | REST_CONTROLLER("RestController", AnnotationConstants.REST_CONTROLLER); 15 | 16 | private final String name; 17 | 18 | private final String qualifiedName; 19 | 20 | ControllerAnnotation(String name, String qualifiedName) { 21 | this.name = name; 22 | this.qualifiedName = qualifiedName; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/enumtype/Theme.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.enumtype; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-07-01 22:20:57 6 | */ 7 | public enum Theme { 8 | 9 | Darcula, 10 | Light; 11 | 12 | public boolean isDarcula() { 13 | return Darcula.equals(this); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/exception/FuDocException.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.exception; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2022-08-15 17:19:44 6 | */ 7 | public class FuDocException extends RuntimeException { 8 | 9 | 10 | public FuDocException() { 11 | super(); 12 | } 13 | 14 | public FuDocException(String arg0) { 15 | super(arg0); 16 | } 17 | 18 | public FuDocException(String arg0, Throwable arg1) { 19 | super(arg0, arg1); 20 | } 21 | 22 | public FuDocException(Throwable arg0) { 23 | super(arg0); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/exception/IssueException.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.exception; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-07-31 22:33:07 6 | */ 7 | public class IssueException extends FuDocException{ 8 | public IssueException(String arg0) { 9 | super(arg0); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/exception/report/issue/param/GithubIssueBody.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.exception.report.issue.param; 2 | 3 | import com.google.common.collect.Lists; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2023-07-31 21:52:24 12 | */ 13 | @Getter 14 | @Setter 15 | public class GithubIssueBody { 16 | 17 | private String title; 18 | 19 | private String body; 20 | 21 | private List labels = Lists.newArrayList("bug"); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/exception/report/issue/param/IssueBody.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.exception.report.issue.param; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.Properties; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-07-31 21:34:06 11 | */ 12 | @Getter 13 | @Setter 14 | public class IssueBody { 15 | 16 | private String throwableText; 17 | private String message; 18 | private String additionalInfo; 19 | private String issueMd5; 20 | 21 | 22 | private String fullApplicationName; 23 | private String editionName; 24 | private String build; 25 | private String buildDate; 26 | private String javaRuntimeVersion; 27 | private String osArch; 28 | private String vmName; 29 | private String vmVendor; 30 | private String osInfo; 31 | private String encoding; 32 | 33 | private String pluginName; 34 | private String pluginVersion; 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/listener/FuDocLoadListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.listener; 2 | 3 | import com.intellij.ide.plugins.DynamicPluginListener; 4 | import com.intellij.ide.plugins.IdeaPluginDescriptor; 5 | import cn.fudoc.common.service.FuDocLoadService; 6 | import com.wdf.fudoc.common.constant.FuDocConstants; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | import java.util.ServiceLoader; 10 | 11 | /** 12 | * @author wangdingfu 13 | * @date 2023-10-03 14:43:47 14 | */ 15 | public class FuDocLoadListener implements DynamicPluginListener { 16 | @Override 17 | public void beforePluginLoaded(@NotNull IdeaPluginDescriptor pluginDescriptor) { 18 | if (FuDocConstants.ID.equals(pluginDescriptor.getPluginId().getIdString())) { 19 | ServiceLoader load = ServiceLoader.load(FuDocLoadService.class, FuDocLoadListener.class.getClassLoader()); 20 | load.forEach(FuDocLoadService::loaded); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/common/listener/FuDocSetupAbleListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.common.listener; 2 | 3 | import com.intellij.openapi.project.Project; 4 | import com.intellij.openapi.startup.StartupActivity; 5 | import cn.fudoc.common.service.FuDocSetupAble; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | import java.util.ServiceLoader; 10 | 11 | /** 12 | * @author wangdingfu 13 | * @date 2023-10-02 18:59:04 14 | */ 15 | @Slf4j 16 | public class FuDocSetupAbleListener implements StartupActivity { 17 | 18 | @Override 19 | public void runActivity(@NotNull Project project) { 20 | ServiceLoader load = ServiceLoader.load(FuDocSetupAble.class, FuDocSetupAbleListener.class.getClassLoader()); 21 | load.forEach(f -> f.init(project)); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/EditableColumnInfo.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components; 2 | 3 | import com.intellij.util.ui.ColumnInfo; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2022-09-05 19:20:25 8 | */ 9 | public abstract class EditableColumnInfo extends ColumnInfo { 10 | 11 | public EditableColumnInfo(String name) { 12 | super(name); 13 | } 14 | 15 | public EditableColumnInfo() { 16 | super(""); 17 | } 18 | 19 | 20 | @Override 21 | public boolean isCellEditable(Item item) { 22 | return true; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/FuButtonRenderer.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components; 2 | 3 | import com.intellij.openapi.wm.impl.IdeGlassPaneImpl; 4 | 5 | import javax.swing.*; 6 | import javax.swing.table.TableCellRenderer; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-01-19 16:37:16 11 | */ 12 | public class FuButtonRenderer implements TableCellRenderer { 13 | 14 | private final JButton button; 15 | 16 | public FuButtonRenderer(JButton button) { 17 | this.button = button; 18 | button.setOpaque(true); 19 | } 20 | 21 | public JComponent getTableCellRendererComponent(JTable table, Object value, 22 | boolean isSelected, boolean hasFocus, int row, int column) { 23 | return button; 24 | } 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/FuIconListRendererComponent.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components; 2 | 3 | import com.intellij.icons.AllIcons; 4 | 5 | import javax.swing.*; 6 | import java.awt.*; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-06-09 22:57:21 11 | */ 12 | public class FuIconListRendererComponent extends DefaultListCellRenderer { 13 | 14 | private final Icon icon; 15 | 16 | public FuIconListRendererComponent(Icon icon) { 17 | this.icon = icon; 18 | } 19 | 20 | @Override 21 | public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 22 | JLabel jLabel = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 23 | jLabel.setIcon(icon); 24 | return jLabel; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/FuTableCellEditorListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components; 2 | 3 | import javax.swing.table.TableCellEditor; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2022-09-07 20:24:02 8 | */ 9 | public interface FuTableCellEditorListener { 10 | 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/FuTableComboBoxRenderer.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components; 2 | 3 | import com.intellij.util.ui.table.IconTableCellRenderer; 4 | import org.jetbrains.annotations.NotNull; 5 | import org.jetbrains.annotations.Nullable; 6 | 7 | import javax.swing.*; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2023-07-20 21:57:06 12 | */ 13 | public class FuTableComboBoxRenderer extends IconTableCellRenderer { 14 | 15 | private final Icon icon; 16 | 17 | public FuTableComboBoxRenderer(Icon icon) { 18 | this.icon = icon; 19 | } 20 | 21 | @Override 22 | protected @Nullable Icon getIcon(@NotNull String value, JTable table, int row) { 23 | return this.icon; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/JLabelListRendererComponent.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components; 2 | 3 | import com.intellij.icons.AllIcons; 4 | 5 | import javax.swing.*; 6 | import java.awt.*; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-06-09 22:57:21 11 | */ 12 | public class JLabelListRendererComponent extends DefaultListCellRenderer { 13 | 14 | 15 | @Override 16 | public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 17 | JLabel jLabel = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 18 | jLabel.setIcon(AllIcons.Nodes.Module); 19 | return jLabel; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/RightComponent.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components; 2 | 3 | import com.wdf.fudoc.components.bo.BaseTemplate; 4 | 5 | /** 6 | * 左右组件的右侧组件 7 | * 8 | * @author wangdingfu 9 | * @date 2023-02-21 00:00:49 10 | */ 11 | public class RightComponent { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/bo/BaseList.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * list组件数据对象 8 | * 9 | * @author wangdingfu 10 | * @date 2023-03-11 17:33:10 11 | */ 12 | @Getter 13 | @Setter 14 | public class BaseList { 15 | 16 | /** 17 | * list组件每一项展示的内容 18 | */ 19 | private String name; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/bo/BaseTemplate.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * 左右组件数据模板对象 8 | * 9 | * @author wangdingfu 10 | * @date 2023-02-20 22:36:43 11 | */ 12 | @Getter 13 | @Setter 14 | public class BaseTemplate { 15 | 16 | 17 | /** 18 | * 用于标识当前列表的唯一一条记录 并且用于在列表中展示 19 | */ 20 | private String identify; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/bo/DynamicTableBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.HashMap; 7 | import java.util.Map; 8 | import java.util.Objects; 9 | 10 | /** 11 | * @author wangdingfu 12 | * @date 2023-07-08 16:53:13 13 | */ 14 | @Getter 15 | @Setter 16 | public class DynamicTableBO { 17 | /** 18 | * 是否选中 19 | */ 20 | private Boolean select = true; 21 | 22 | protected Map dataMap = new HashMap<>(); 23 | 24 | 25 | public Object getValue(String name) { 26 | return dataMap.get(name); 27 | } 28 | 29 | public void setValue(String name, Object value) { 30 | dataMap.put(name, value); 31 | } 32 | 33 | 34 | public boolean isSelect() { 35 | return Objects.nonNull(this.select) && this.select; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/bo/HeaderKeyValueBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-07-01 21:12:12 9 | */ 10 | @Getter 11 | @Setter 12 | public class HeaderKeyValueBO extends KeyValueTableBO { 13 | 14 | public HeaderKeyValueBO(Boolean select, String requestParamType, String key, String value, String description) { 15 | super(select, requestParamType, key, value, description, true); 16 | } 17 | 18 | public HeaderKeyValueBO() { 19 | } 20 | 21 | public HeaderKeyValueBO(Boolean select, String key, String value) { 22 | super(select, key, value); 23 | } 24 | 25 | public HeaderKeyValueBO(Boolean select, String key, String value, String description) { 26 | super(select, key, value, description); 27 | } 28 | 29 | /** 30 | * 级别 接口请求头 全局请求头 31 | */ 32 | private String level = "接口请求头"; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/bo/TipCmd.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.bo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-05-31 17:04:27 11 | */ 12 | @Getter 13 | @Setter 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class TipCmd { 17 | 18 | private String text; 19 | 20 | private String cmd; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/bo/TreeTableBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.bo; 2 | 3 | import cn.hutool.core.lang.tree.Tree; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import javax.swing.tree.TreePath; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2023-01-07 17:38:31 12 | */ 13 | @Getter 14 | @Setter 15 | public class TreeTableBO extends KeyValueTableBO { 16 | 17 | private String check; 18 | private String check2; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/column/Column.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.column; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import javax.swing.table.TableCellEditor; 7 | import javax.swing.table.TableCellRenderer; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2022-09-05 16:07:53 12 | */ 13 | @Getter 14 | @Setter 15 | public abstract class Column { 16 | 17 | public abstract Class getColumnClass(); 18 | 19 | public abstract String getFieldName(); 20 | 21 | public TableCellRenderer getCellRenderer() { 22 | return null; 23 | } 24 | 25 | /** 26 | * 列名 27 | */ 28 | private String name; 29 | 30 | /** 31 | * 列编辑器 32 | */ 33 | private TableCellEditor editor; 34 | 35 | 36 | public Column(String name, TableCellEditor editor) { 37 | this.name = name; 38 | this.editor = editor; 39 | } 40 | 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/column/DynamicColumn.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.column; 2 | 3 | import com.wdf.fudoc.components.factory.TableCellEditorFactory; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-07-08 16:20:00 10 | */ 11 | @Getter 12 | @Setter 13 | public class DynamicColumn extends Column { 14 | 15 | /** 16 | * 字段名称 17 | */ 18 | private String fieldName; 19 | 20 | public DynamicColumn(String name, String fieldName) { 21 | super(name, TableCellEditorFactory.createTextFieldEditor()); 22 | this.fieldName = fieldName; 23 | } 24 | 25 | @Override 26 | public Class getColumnClass() { 27 | return Object.class; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/column/SpringBootColumn.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.column; 2 | 3 | import com.wdf.fudoc.common.base.FuFunction; 4 | import com.wdf.fudoc.spring.SpringBootEnvLoader; 5 | import cn.fudoc.common.util.ProjectUtils; 6 | import icons.FuDocIcons; 7 | import jdk.jfr.StackTrace; 8 | import lombok.Getter; 9 | 10 | import java.util.function.BiConsumer; 11 | 12 | /** 13 | * @author wangdingfu 14 | * @date 2023-07-20 22:16:39 15 | */ 16 | @Getter 17 | @StackTrace 18 | public class SpringBootColumn extends ComboBoxColumn { 19 | 20 | public SpringBootColumn(String name, FuFunction getFun, BiConsumer setFun) { 21 | super(name, FuDocIcons.SPRING, getFun, setFun, SpringBootEnvLoader.getApplication(ProjectUtils.getCurrProject())); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/listener/ChooseFileListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.listener; 2 | 3 | import com.intellij.openapi.vfs.VirtualFile; 4 | 5 | import java.io.File; 6 | 7 | /** 8 | * 选择文件监听器 9 | * 10 | * @author wangdingfu 11 | * @date 2022-11-25 22:03:09 12 | */ 13 | public interface ChooseFileListener { 14 | 15 | /** 16 | * 当前文件是否可以选中 17 | * 18 | * @param file 鼠标点击的文件或文件夹 19 | * @return 是否可选中 20 | */ 21 | boolean isFileSelectable(VirtualFile file); 22 | 23 | 24 | /** 25 | * 选中文件的回调 26 | * 27 | * @param file 选中的文件 28 | */ 29 | void selectedFile(File file); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/listener/FuActionListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.listener; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-02-21 00:14:48 6 | */ 7 | public interface FuActionListener { 8 | 9 | 10 | void doAction(T data); 11 | 12 | 13 | default void doActionAfter(T data){ 14 | 15 | } 16 | 17 | 18 | default void remove(T data){ 19 | 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/listener/FuEditorListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.listener; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2022-09-19 13:48:10 6 | */ 7 | public interface FuEditorListener { 8 | 9 | /** 10 | * 内容变更事件 11 | * 12 | * @param content 变更后的内容 13 | */ 14 | default void contentChange(String content) { 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/listener/FuFiltersListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.listener; 2 | 3 | import javax.swing.*; 4 | import java.util.List; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-06-10 20:05:31 9 | */ 10 | public interface FuFiltersListener { 11 | 12 | List getAllElements(); 13 | 14 | List getSelectedElements(); 15 | 16 | 17 | String getElementText(T data); 18 | 19 | Icon getElementIcon(T data); 20 | 21 | void setSelected(T data, boolean isMark); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/listener/FuMsgListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.listener; 2 | 3 | import cn.fudoc.common.msg.bo.FuMsgItemBO; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2022-11-30 14:43:43 8 | */ 9 | public interface FuMsgListener { 10 | 11 | /** 12 | * 消息点击事件 13 | * 14 | * @param msgId 主消息id 15 | * @param fuMsgItemBO 点击的消息 16 | */ 17 | void clickMsgEvent(String msgId, FuMsgItemBO fuMsgItemBO); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/listener/FuStatusLabelListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.listener; 2 | 3 | import com.wdf.fudoc.request.pojo.BasePopupMenuItem; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-07-09 22:59:37 10 | */ 11 | public interface FuStatusLabelListener { 12 | 13 | /** 14 | * 获取需要弹框展示的列表集合 15 | */ 16 | List getList(); 17 | 18 | 19 | void select(String text); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/listener/FuTableDisableListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.listener; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-01-30 11:33:11 6 | */ 7 | public class FuTableDisableListener implements FuTableListener { 8 | 9 | @Override 10 | public boolean isCellEditable(int rowIndex, int columnIndex) { 11 | return false; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/listener/FuViewListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.listener; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-01-08 20:24:29 6 | */ 7 | public interface FuViewListener { 8 | 9 | /** 10 | * 保存数据 11 | */ 12 | void apply(); 13 | 14 | 15 | /** 16 | * 初始化数据(重置数据) 17 | */ 18 | void reset(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/listener/SendHttpListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.listener; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-06-12 10:42:56 6 | */ 7 | public interface SendHttpListener { 8 | 9 | void doSendHttp(); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/listener/TabBarListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.listener; 2 | 3 | import com.wdf.fudoc.components.bo.TabActionBO; 4 | import com.wdf.fudoc.components.bo.BarPanelBO; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2022-09-19 17:31:53 9 | */ 10 | public interface TabBarListener { 11 | 12 | /** 13 | * bar点击事件 14 | * 15 | * @param barPanelBO 工具栏面板对象 16 | */ 17 | default void click(BarPanelBO barPanelBO) { 18 | 19 | } 20 | 21 | /** 22 | * bar点击事件 23 | * 24 | * @param tabActionBO 工具栏面板对象 25 | */ 26 | default void onClick(String parentTab, TabActionBO tabActionBO) { 27 | 28 | } 29 | 30 | 31 | /** 32 | * toggle bar 选中事件 33 | * 34 | * @param state 选中状态 35 | */ 36 | default void select(boolean state) { 37 | 38 | } 39 | 40 | /** 41 | * toggle bar 选中事件 42 | * 43 | * @param tabActionBO 选中tab的参数 44 | */ 45 | default void onSelect(TabActionBO tabActionBO) { 46 | 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/message/FuMsgHandler.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.message; 2 | 3 | import com.wdf.fudoc.components.message.handler.*; 4 | import cn.fudoc.common.enumtype.MessageType; 5 | 6 | import java.util.Map; 7 | import java.util.concurrent.ConcurrentHashMap; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2022-11-30 17:45:05 12 | */ 13 | public class FuMsgHandler { 14 | 15 | private static final Map FU_MSG_EXECUTOR_MAP = new ConcurrentHashMap<>(); 16 | 17 | static { 18 | FU_MSG_EXECUTOR_MAP.put(MessageType.NORMAL, new NormalMsgExecutor()); 19 | FU_MSG_EXECUTOR_MAP.put(MessageType.LINK, new LinkMsgExecutor()); 20 | FU_MSG_EXECUTOR_MAP.put(MessageType.DIALOG, new DialogMsgExecutor()); 21 | FU_MSG_EXECUTOR_MAP.put(MessageType.CLICK, new ClickMsgExecutor()); 22 | } 23 | 24 | public static FuMsgExecutor get(MessageType messageType) { 25 | return FU_MSG_EXECUTOR_MAP.get(messageType); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/message/HighlightedRegion.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.message; 2 | 3 | import com.intellij.openapi.editor.markup.TextAttributes; 4 | import cn.fudoc.common.msg.bo.FuMsgItemBO; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | 8 | @Getter 9 | public final class HighlightedRegion { 10 | public FuMsgItemBO fuMsgItemBO; 11 | public TextAttributes textAttributes; 12 | 13 | 14 | public HighlightedRegion(FuMsgItemBO fuMsgItemBO, TextAttributes textAttributes) { 15 | this.fuMsgItemBO = fuMsgItemBO; 16 | this.textAttributes = textAttributes; 17 | } 18 | } -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/message/handler/DialogMsgExecutor.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.message.handler; 2 | 3 | import cn.fudoc.common.msg.bo.FuMsgItemBO; 4 | import cn.fudoc.common.enumtype.MessageType; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2022-11-30 17:43:46 9 | */ 10 | public class DialogMsgExecutor implements FuMsgExecutor { 11 | 12 | @Override 13 | public void execute(String msgId, FuMsgItemBO fuMsgItemBO) { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/message/handler/FuMsgExecutor.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.message.handler; 2 | 3 | import cn.fudoc.common.msg.bo.FuMsgItemBO; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2022-11-30 17:31:50 8 | */ 9 | public interface FuMsgExecutor { 10 | 11 | /** 12 | * 消息点击后触发事件 13 | * 14 | * @param msgId 消息id 15 | * @param fuMsgItemBO 点击的消息对象 16 | */ 17 | void execute(String msgId, FuMsgItemBO fuMsgItemBO); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/message/handler/LinkMsgExecutor.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.message.handler; 2 | 3 | import com.intellij.ide.BrowserUtil; 4 | import cn.fudoc.common.msg.bo.FuMsgItemBO; 5 | import cn.fudoc.common.enumtype.MessageType; 6 | import com.wdf.fudoc.util.FuStringUtils; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2022-11-30 17:37:20 11 | */ 12 | public class LinkMsgExecutor implements FuMsgExecutor { 13 | 14 | 15 | @Override 16 | public void execute(String msgId, FuMsgItemBO fuMsgItemBO) { 17 | String value = fuMsgItemBO.getValue(); 18 | if(FuStringUtils.isNotBlank(value)){ 19 | BrowserUtil.browse(value); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/message/handler/NormalMsgExecutor.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.message.handler; 2 | 3 | import cn.fudoc.common.msg.bo.FuMsgItemBO; 4 | import cn.fudoc.common.enumtype.MessageType; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2022-11-30 17:38:47 9 | */ 10 | public class NormalMsgExecutor implements FuMsgExecutor { 11 | 12 | @Override 13 | public void execute(String msgId, FuMsgItemBO fuMsgItemBO) { 14 | 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/toolbar/PinToolBarAction.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.toolbar; 2 | 3 | import com.intellij.openapi.actionSystem.AnActionEvent; 4 | import com.intellij.openapi.actionSystem.ToggleAction; 5 | import lombok.Getter; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | import java.util.concurrent.atomic.AtomicBoolean; 9 | 10 | /** 11 | * @author wangdingfu 12 | * @date 2022-09-17 18:50:14 13 | */ 14 | public class PinToolBarAction extends ToggleAction { 15 | 16 | private final AtomicBoolean pinStatus; 17 | 18 | public PinToolBarAction(AtomicBoolean pinStatus) { 19 | this.pinStatus = pinStatus; 20 | } 21 | 22 | @Override 23 | public boolean isDumbAware() { 24 | return true; 25 | } 26 | 27 | @Override 28 | public boolean isSelected(@NotNull AnActionEvent e) { 29 | return pinStatus.get(); 30 | } 31 | 32 | @Override 33 | public void setSelected(@NotNull AnActionEvent e, boolean state) { 34 | pinStatus.set(state); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/tree/FuTreeActionListener.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.tree; 2 | 3 | import com.wdf.fudoc.components.tree.node.FuTreeNode; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2023-07-02 16:04:50 8 | */ 9 | public interface FuTreeActionListener { 10 | 11 | /** 12 | * 创建一个新节点 13 | */ 14 | FuTreeNode createNode(FuTreeNode parent); 15 | 16 | 17 | /** 18 | * 移除节点 19 | * 20 | * @param parent 父节点 21 | */ 22 | boolean removeNode(FuTreeNode parent); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/tree/FuTreeCellRenderer.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.tree; 2 | 3 | import com.intellij.ui.ColoredTreeCellRenderer; 4 | import com.wdf.fudoc.components.tree.node.FuTreeNode; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | import javax.swing.*; 8 | import java.util.Objects; 9 | 10 | /** 11 | * 树形组件节点渲染 12 | * 13 | * @author wangdingfu 14 | * @date 2023-07-02 15:53:41 15 | */ 16 | public class FuTreeCellRenderer extends ColoredTreeCellRenderer { 17 | 18 | 19 | @Override 20 | public void customizeCellRenderer(@NotNull JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { 21 | if (value instanceof FuTreeNode fuTreeNode) { 22 | Object data = fuTreeNode.getData(); 23 | Icon icon = fuTreeNode.getIcon(); 24 | if (Objects.nonNull(icon)) { 25 | setIcon(icon); 26 | } 27 | append(data.toString()); 28 | } else { 29 | append(value.toString()); 30 | } 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/tree/FuTreeModel.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.tree; 2 | 3 | import javax.swing.tree.DefaultTreeModel; 4 | import javax.swing.tree.TreeNode; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-07-02 13:52:30 9 | */ 10 | public class FuTreeModel extends DefaultTreeModel { 11 | public FuTreeModel(TreeNode root) { 12 | super(root); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/tree/node/FuTreeNode.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.tree.node; 2 | 3 | import lombok.Getter; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | import javax.swing.*; 7 | import javax.swing.tree.DefaultMutableTreeNode; 8 | 9 | /** 10 | * 树形结构节点对象 11 | * 12 | * @author wangdingfu 13 | * @date 2023-07-02 15:07:47 14 | */ 15 | public class FuTreeNode extends DefaultMutableTreeNode { 16 | 17 | private final T data; 18 | 19 | @Getter 20 | private final Icon icon; 21 | 22 | public FuTreeNode(T data) { 23 | this(data, null); 24 | } 25 | 26 | public FuTreeNode(@NotNull T data, Icon icon) { 27 | super(data); 28 | this.icon = icon; 29 | this.data = data; 30 | } 31 | 32 | @NotNull 33 | public T getData() { 34 | return data; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/tree/old/FuTreeNode.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.tree.old; 2 | 3 | import com.intellij.ui.treeStructure.CachingSimpleNode; 4 | import com.intellij.ui.treeStructure.SimpleNode; 5 | 6 | /** 7 | * 树形节点 8 | * 9 | * @author wangdingfu 10 | * @date 2023-01-08 21:57:50 11 | */ 12 | public abstract class FuTreeNode extends CachingSimpleNode { 13 | 14 | 15 | protected FuTreeNode(SimpleNode parent) { 16 | super(parent); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/tree/old/FuTreeStructure.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.tree.old; 2 | 3 | import com.intellij.ui.treeStructure.SimpleTreeStructure; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-01-08 22:03:51 10 | */ 11 | public class FuTreeStructure extends SimpleTreeStructure { 12 | /** 13 | * 根module 14 | */ 15 | private final T root; 16 | 17 | public FuTreeStructure(T root) { 18 | this.root = root; 19 | } 20 | 21 | 22 | @Override 23 | public @NotNull Object getRootElement() { 24 | return root; 25 | } 26 | 27 | public T getRoot() { 28 | return root; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/widget/FuResponseStatusWidget.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.widget; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-02-01 10:44:54 6 | */ 7 | public class FuResponseStatusWidget { 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/components/widget/FuWidget.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.components.widget; 2 | 3 | import com.wdf.fudoc.request.pojo.FuHttpRequestData; 4 | import com.wdf.fudoc.util.FuStringUtils; 5 | 6 | import javax.swing.*; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-02-01 10:45:04 11 | */ 12 | public interface FuWidget { 13 | 14 | default boolean isRight() { 15 | return true; 16 | } 17 | 18 | JComponent getComponent(); 19 | 20 | default void initData(FuHttpRequestData fuHttpRequestData) { 21 | 22 | } 23 | 24 | default String getCurrent() { 25 | return FuStringUtils.EMPTY; 26 | } 27 | 28 | default boolean isShow() { 29 | return true; 30 | } 31 | 32 | 33 | default void refresh() { 34 | 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/futool/beancopy/MyPrefixMatcher.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.futool.beancopy; 2 | 3 | import com.intellij.codeInsight.completion.PrefixMatcher; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-08-08 13:41:56 9 | */ 10 | public class MyPrefixMatcher extends PrefixMatcher { 11 | protected MyPrefixMatcher(String prefix) { 12 | super(prefix); 13 | } 14 | 15 | @Override 16 | public boolean prefixMatches(@NotNull String name) { 17 | return name.equalsIgnoreCase(myPrefix); 18 | } 19 | 20 | @Override 21 | public @NotNull PrefixMatcher cloneWithPrefix(@NotNull String prefix) { 22 | return new MyPrefixMatcher(prefix); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/futool/beancopy/bo/CopyBeanMethodBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.futool.beancopy.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-08-06 15:23:31 9 | */ 10 | @Getter 11 | @Setter 12 | public class CopyBeanMethodBO { 13 | private String getMethod; 14 | 15 | private String setMethod; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/futool/beancopy/bo/FuCompletion.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.futool.beancopy.bo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-08-06 11:45:25 11 | */ 12 | @Getter 13 | @Setter 14 | @NoArgsConstructor 15 | public class FuCompletion { 16 | 17 | private CopyBeanBO copyBean; 18 | private CopyBeanBO toBean; 19 | private int index; 20 | 21 | public FuCompletion(CopyBeanBO copyBean, CopyBeanBO toBean, int index) { 22 | this.copyBean = copyBean; 23 | this.toBean = toBean; 24 | this.index = index; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/futool/beancopy/bo/FuPsiMethod.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.futool.beancopy.bo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-08-07 11:13:59 9 | */ 10 | @Getter 11 | @Setter 12 | public class FuPsiMethod { 13 | 14 | private boolean isGetter; 15 | private boolean isSetter; 16 | /** 17 | * 字段名 18 | */ 19 | private String fieldName; 20 | 21 | 22 | public boolean isFieldMethod() { 23 | return isGetter || isSetter; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/futool/dtoconvert/application/IGenerateVo2Dto.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.futool.dtoconvert.application; 2 | 3 | import com.intellij.openapi.actionSystem.DataContext; 4 | import com.intellij.openapi.project.Project; 5 | import com.intellij.psi.PsiFile; 6 | 7 | public interface IGenerateVo2Dto { 8 | 9 | void doGenerate(Project project, DataContext dataContext, PsiFile psiFile); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/navigation/FuNavigationApiEveryWhereFactory.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.navigation; 2 | 3 | import com.intellij.ide.actions.searcheverywhere.SearchEverywhereContributor; 4 | import com.intellij.ide.actions.searcheverywhere.SearchEverywhereContributorFactory; 5 | import com.intellij.openapi.actionSystem.AnActionEvent; 6 | import com.intellij.psi.search.GlobalSearchScope; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | /** 10 | * 全局搜索工厂类 11 | * 12 | * @author wangdingfu 13 | * @date 2023-05-24 11:49:06 14 | */ 15 | public class FuNavigationApiEveryWhereFactory implements SearchEverywhereContributorFactory { 16 | 17 | @Override 18 | public @NotNull SearchEverywhereContributor createContributor(@NotNull AnActionEvent initEvent) { 19 | return new FuApiNavigationContributor(initEvent); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/HttpCallback.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request; 2 | 3 | import com.wdf.fudoc.request.pojo.FuHttpRequestData; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2022-09-19 22:29:35 8 | */ 9 | public interface HttpCallback { 10 | 11 | /** 12 | * 初始化数据 13 | * 14 | * @param httpRequestData 发起http请求的数据 15 | */ 16 | void initData(FuHttpRequestData httpRequestData); 17 | 18 | 19 | /** 20 | * 发起请求前置方法 21 | * 22 | * @param fuHttpRequestData 请求数据对象 23 | */ 24 | default void doSendBefore(FuHttpRequestData fuHttpRequestData) { 25 | } 26 | 27 | 28 | /** 29 | * 发起请求后置方法 30 | * 31 | * @param fuHttpRequestData 请求数据对象 32 | */ 33 | default void doSendAfter(FuHttpRequestData fuHttpRequestData) { 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/callback/FuRequestCallback.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.callback; 2 | 3 | import com.intellij.openapi.progress.ProgressIndicator; 4 | import com.intellij.psi.PsiElement; 5 | import com.wdf.fudoc.request.pojo.FuHttpRequestData; 6 | import com.wdf.fudoc.request.tab.request.RequestTabView; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-06-12 22:15:44 11 | */ 12 | public interface FuRequestCallback { 13 | /** 14 | * 停止正在发起的http请求 15 | */ 16 | void stopHttp(); 17 | 18 | 19 | boolean getSendStatus(); 20 | 21 | void initData(FuHttpRequestData fuHttpRequestData); 22 | 23 | 24 | PsiElement getPsiElement(); 25 | 26 | RequestTabView getRequestTabView(); 27 | 28 | 29 | default boolean isWindow() { 30 | return false; 31 | } 32 | 33 | 34 | default void refresh() { 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/constants/RequestConstants.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.constants; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2022-09-17 18:59:05 6 | */ 7 | public interface RequestConstants { 8 | 9 | /** 10 | * 定义请求工具栏行为组 11 | */ 12 | String ACTION_REQUEST_TOOLBAR = "fudoc.request.toolbar.action"; 13 | String ACTION_REQUEST_TOOLBAR_PIN = "fudoc.http.toolbar.action.pin"; 14 | String ACTION_REQUEST_TOOLBAR_STOP = "fudoc.request.toolbar.action.stop"; 15 | 16 | /** 17 | * 定义请求工具栏位置 18 | */ 19 | String PLACE_REQUEST_TOOLBAR = "fudoc.request.toolbar"; 20 | 21 | 22 | 23 | String PLACE_PANEL_TOOLBAR = "fudoc.panel.toolbar"; 24 | 25 | 26 | String PLACE_SETTINGS_ADD_TAB = "fudoc.request.setting.tab.add"; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/constants/enumtype/HeaderScope.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.constants.enumtype; 2 | 3 | import com.google.common.collect.Sets; 4 | import lombok.Getter; 5 | 6 | import java.util.Set; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2022-12-07 22:18:08 11 | */ 12 | @Getter 13 | public enum HeaderScope { 14 | 15 | ALL_PROJECT("所有项目"), CURRENT_PROJECT("当前项目"), 16 | /** 17 | * TODO 当前暂未实现 18 | */ 19 | SELECT_MODULE("指定模块"), 20 | ; 21 | 22 | 23 | private final String name; 24 | 25 | HeaderScope(String name) { 26 | this.name = name; 27 | } 28 | 29 | 30 | public static Set scopeList() { 31 | return Sets.newHashSet(ALL_PROJECT.getName(), CURRENT_PROJECT.getName()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/constants/enumtype/RequestDialog.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.constants.enumtype; 2 | 3 | /** 4 | * 请求窗口枚举 5 | * 6 | * @author wangdingfu 7 | * @date 2022-12-05 21:35:47 8 | */ 9 | public enum RequestDialog { 10 | 11 | /** 12 | * http请求窗口 13 | */ 14 | HTTP_DIALOG, 15 | /** 16 | * IDEA的工具栏窗体 17 | */ 18 | TOOL_WINDOW; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/constants/enumtype/RequestStatus.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.constants.enumtype; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2022-09-23 18:23:48 8 | */ 9 | @Getter 10 | public enum RequestStatus { 11 | 12 | SUCCESS("SUCCESS"), 13 | FAIL("FAIL"), 14 | TIMEOUT("TIMEOUT"), 15 | ; 16 | 17 | 18 | private final String name; 19 | 20 | RequestStatus(String name) { 21 | this.name = name; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/constants/enumtype/ResponseType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.constants.enumtype; 2 | 3 | /** 4 | * 响应类型 5 | * 6 | * @author wangdingfu 7 | * @date 2022-09-26 10:58:35 8 | */ 9 | public enum ResponseType { 10 | 11 | /** 12 | * 拒绝连接 13 | */ 14 | ERR_CONNECTION_REFUSED, 15 | 16 | /** 17 | * 未知错误 18 | */ 19 | ERR_UNKNOWN, 20 | 21 | /** 22 | * 超时 23 | */ 24 | TIME_OUT, 25 | 26 | /** 27 | * 响应成功 28 | */ 29 | SUCCESS; 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/constants/enumtype/ScriptCmdType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.constants.enumtype; 2 | 3 | import cn.fudoc.common.base.FuBundle; 4 | import lombok.Getter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-06-04 22:03:12 9 | */ 10 | @Getter 11 | public enum ScriptCmdType { 12 | DEMO("demo", FuBundle.message("fudoc.script.study.title"), 1), 13 | SCRIPT_DEMO("script_demo", FuBundle.message("fudoc.script.study.example"), 2), 14 | HTTP("http", FuBundle.message("fudoc.script.study.http"), 3), 15 | LOG("log", FuBundle.message("fudoc.script.study.log"), 4), 16 | ; 17 | 18 | private final String type; 19 | 20 | private final String desc; 21 | 22 | private final Integer sort; 23 | 24 | ScriptCmdType(String type, String desc, Integer sort) { 25 | this.type = type; 26 | this.desc = desc; 27 | this.sort = sort; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/constants/enumtype/ScriptType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.constants.enumtype; 2 | 3 | import cn.fudoc.common.base.FuBundle; 4 | import lombok.Getter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-07-23 15:01:46 9 | */ 10 | @Getter 11 | public enum ScriptType { 12 | 13 | PRE_SCRIPT(FuBundle.message("fudoc.script.pre.title")), 14 | 15 | POST_SCRIPT(FuBundle.message("fudoc.script.post.title")); 16 | 17 | private final String view; 18 | 19 | ScriptType(String view) { 20 | this.view = view; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/constants/enumtype/ViewMode.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.constants.enumtype; 2 | 3 | import org.jetbrains.annotations.NonNls; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2023-06-25 16:12:51 8 | */ 9 | public enum ViewMode { 10 | SINGLE_PINNED("single","始终只展示一个"), 11 | MULTI_PINNED("multi","可展示多个"), 12 | ; 13 | 14 | public final String myActionID; 15 | public final String myActionName; 16 | 17 | ViewMode(String myActionID, String myActionName) { 18 | this.myActionID = myActionID; 19 | this.myActionName = myActionName; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/execute/FuHttpRequest.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.execute; 2 | 3 | 4 | import com.wdf.fudoc.request.HttpCallback; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2022-09-19 20:23:30 9 | */ 10 | public interface FuHttpRequest { 11 | 12 | /** 13 | * 获取请求状态 14 | */ 15 | boolean getStatus(); 16 | 17 | /** 18 | * 发起请求 19 | */ 20 | void doSend(HttpCallback httpCallback); 21 | 22 | /** 23 | * 请求完毕 24 | */ 25 | void finished(); 26 | 27 | 28 | /** 29 | * 停止请求 30 | */ 31 | void doStop(); 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/global/GlobalRequestSettingData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.global; 2 | 3 | import com.wdf.fudoc.request.pojo.GlobalHeaderData; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 【Fu Request】全局设置数据 11 | * 12 | * @author wangdingfu 13 | * @date 2022-12-07 22:16:40 14 | */ 15 | @Getter 16 | @Setter 17 | public class GlobalRequestSettingData { 18 | 19 | 20 | /** 21 | * 全局请求头 22 | */ 23 | private List globalHeaderDataList; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/global/RequestHistory.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.global; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2022-09-18 22:24:43 11 | */ 12 | @Getter 13 | @Setter 14 | public class RequestHistory { 15 | 16 | 17 | /** 18 | * 请求记录数量 19 | */ 20 | private Integer count; 21 | 22 | 23 | /** 24 | * 请求id集合 按照请求顺序排序 25 | */ 26 | private List requestIds; 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/http/FuHttpClient.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.http; 2 | 3 | import com.intellij.httpClient.http.request.psi.HttpRequest; 4 | import com.intellij.openapi.project.Project; 5 | import com.intellij.psi.PsiClass; 6 | import com.intellij.psi.PsiMethod; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-05-21 23:09:55 11 | */ 12 | public interface FuHttpClient { 13 | 14 | Project getProject(); 15 | 16 | HttpRequest getHttpRequest(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/http/FuRequest.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.http; 2 | 3 | /** 4 | * 发起Http请求数据对象 5 | * 6 | * @author wangdingfu 7 | * @date 2023-05-21 22:56:57 8 | */ 9 | public interface FuRequest { 10 | 11 | /** 12 | * 获取当前请求记录持久化路径 13 | * 14 | * @return http文件路径(${projectPath}/.idea/fudoc/api/${moduleName}/${controllerName}) 15 | */ 16 | String getPath(); 17 | 18 | 19 | /** 20 | * 获取请求记录持久化文件名称 21 | * 22 | * @return 接口持久化到磁盘的文件名称 目前指定为方法名 23 | */ 24 | String getHttpFileName(); 25 | 26 | 27 | /** 28 | * 获取需要持久化到磁盘的http文件内容 29 | * 30 | * @return http文件内容 31 | */ 32 | String httpContent(); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/http/data/HttpClientData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.http.data; 2 | 3 | import com.wdf.fudoc.common.base.KeyValueBO; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 映射.http文件的对象 11 | * @author wangdingfu 12 | * @date 2023-05-19 22:27:05 13 | */ 14 | @Getter 15 | @Setter 16 | public class HttpClientData { 17 | 18 | /** 19 | * 接口名称 20 | */ 21 | private String apiName; 22 | /** 23 | * 请求方法 24 | */ 25 | private String methodName; 26 | /** 27 | * 请求url 28 | */ 29 | private String url; 30 | 31 | /** 32 | * 请求头 33 | */ 34 | private List headers; 35 | 36 | /** 37 | * 请求体 38 | */ 39 | private String requestBody; 40 | 41 | /** 42 | * 响应文件路径集合 43 | */ 44 | private List responseFiles; 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/http/dto/HttpRecentDTO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.http.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-05-22 13:46:36 9 | */ 10 | @Getter 11 | @Setter 12 | public class HttpRecentDTO { 13 | 14 | private String apiName; 15 | 16 | private String controllerPkg; 17 | 18 | private String methodName; 19 | 20 | private String mappingUrl; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/http/impl/FuHttpClientImpl.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.http.impl; 2 | 3 | 4 | import com.intellij.httpClient.http.request.psi.HttpRequest; 5 | import com.intellij.openapi.project.Project; 6 | import com.intellij.psi.PsiClass; 7 | import com.intellij.psi.PsiMethod; 8 | import com.wdf.fudoc.request.http.FuHttpClient; 9 | 10 | /** 11 | * @author wangdingfu 12 | * @date 2023-05-21 23:10:52 13 | */ 14 | public class FuHttpClientImpl implements FuHttpClient { 15 | 16 | 17 | private final Project project; 18 | 19 | private final HttpRequest httpRequest; 20 | 21 | public FuHttpClientImpl(Project project, HttpRequest httpRequest) { 22 | this.project = project; 23 | this.httpRequest = httpRequest; 24 | } 25 | 26 | 27 | @Override 28 | public Project getProject() { 29 | return this.project; 30 | } 31 | 32 | @Override 33 | public HttpRequest getHttpRequest() { 34 | return this.httpRequest; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/po/FuCookiePO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.po; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-06-26 14:07:47 9 | */ 10 | @Getter 11 | @Setter 12 | public class FuCookiePO { 13 | 14 | private String name; 15 | 16 | private String value; 17 | 18 | private String domain; 19 | 20 | private String path; 21 | 22 | private String expires; 23 | 24 | private boolean httpOnly; 25 | 26 | private boolean secure; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/po/FuRequestAuthConfigPO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.po; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-06-08 00:01:42 9 | */ 10 | @Getter 11 | @Setter 12 | public class FuRequestAuthConfigPO { 13 | 14 | /** 15 | * 鉴权配置名称 16 | */ 17 | private String name; 18 | 19 | /** 20 | * 作用域 21 | */ 22 | private Integer scope; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/po/GlobalKeyValuePO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.po; 2 | 3 | import com.wdf.fudoc.components.bo.HeaderKeyValueBO; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * 全局请求头|全局变量 9 | * 10 | * @author wangdingfu 11 | * @date 2023-06-10 21:54:18 12 | */ 13 | @Getter 14 | @Setter 15 | public class GlobalKeyValuePO extends HeaderKeyValueBO { 16 | 17 | public GlobalKeyValuePO() { 18 | super.setLevel("全局请求头"); 19 | } 20 | 21 | /** 22 | * 作用范围 23 | */ 24 | private String applicationName; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/po/GlobalPreScriptPO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.po; 2 | 3 | import com.wdf.fudoc.request.constants.enumtype.ScriptType; 4 | import com.wdf.fudoc.request.pojo.FuHttpRequestData; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | /** 12 | * 全局前置脚本持久化对象 13 | * 14 | * @author wangdingfu 15 | * @date 2023-06-10 21:46:45 16 | */ 17 | @Getter 18 | @Setter 19 | public class GlobalPreScriptPO { 20 | 21 | /** 22 | * 脚本内容 23 | */ 24 | private String script; 25 | 26 | /** 27 | * springboot应用 28 | */ 29 | private String application; 30 | 31 | /** 32 | * 脚本类型 33 | */ 34 | private ScriptType scriptType; 35 | 36 | /** 37 | * 接口请求配置 38 | */ 39 | private Map fuHttpRequestDataMap; 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/AuthConfigCode.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-03-12 17:18:20 6 | */ 7 | public class AuthConfigCode { 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/BaseAuthConfig.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-03-12 17:18:31 9 | */ 10 | @Getter 11 | @Setter 12 | public abstract class BaseAuthConfig { 13 | 14 | /** 15 | * 失效时间 16 | */ 17 | private Long expireTime; 18 | 19 | public abstract String getSuffix(); 20 | 21 | public abstract String getScript(); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/BasePopupMenuItem.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | import javax.swing.*; 9 | 10 | /** 11 | * @author wangdingfu 12 | * @date 2023-07-21 17:53:12 13 | */ 14 | @Getter 15 | @Setter 16 | @NoArgsConstructor 17 | @AllArgsConstructor 18 | public class BasePopupMenuItem { 19 | 20 | 21 | private Icon icon; 22 | 23 | private String showName; 24 | 25 | private boolean canSelect; 26 | 27 | public BasePopupMenuItem(Icon icon, String showName) { 28 | this.icon = icon; 29 | this.showName = showName; 30 | this.canSelect = true; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/CommonHeader.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import com.wdf.fudoc.components.bo.KeyValueTableBO; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import com.wdf.fudoc.util.FuStringUtils; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 公共请求头对象 12 | * 13 | * @author wangdingfu 14 | * @date 2022-12-26 21:30:23 15 | */ 16 | @Getter 17 | @Setter 18 | public class CommonHeader extends KeyValueTableBO { 19 | 20 | /** 21 | * 作用范围 所有项目 当前项目 指定module 22 | */ 23 | private String scope; 24 | 25 | 26 | /** 27 | * 如果是当前项目 则为当前项目id 其他为空字符串 28 | */ 29 | private List projectIdList; 30 | 31 | /** 32 | * 判断当前请求头的值是否为变量(用{{}}括住为变量) 33 | * 34 | * @return true 当前请求头值为变量 35 | */ 36 | public boolean isVariable() { 37 | String value = getValue(); 38 | return FuStringUtils.isNotBlank(value) && value.startsWith("{{") && value.endsWith("}}"); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/ConfigAuthTableBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import com.wdf.fudoc.components.bo.DynamicTableBO; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-07-08 16:57:31 10 | */ 11 | @Getter 12 | @Setter 13 | public class ConfigAuthTableBO extends DynamicTableBO { 14 | 15 | private Boolean select = true; 16 | 17 | private String userName; 18 | 19 | private String password; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/ConfigEnvTableBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import com.wdf.fudoc.components.bo.DynamicTableBO; 4 | import com.wdf.fudoc.components.bo.TreePathBO; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-07-08 16:06:57 11 | */ 12 | @Getter 13 | @Setter 14 | public class ConfigEnvTableBO extends DynamicTableBO { 15 | 16 | /** 17 | * 环境名称 18 | */ 19 | private String envName; 20 | 21 | /** 22 | * 域名 23 | */ 24 | private String domain; 25 | 26 | /** 27 | * 应用 28 | */ 29 | private String application; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/FuHttpResultData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-07-14 14:17:20 9 | */ 10 | @Getter 11 | @Setter 12 | public class FuHttpResultData { 13 | 14 | private String result; 15 | 16 | private int httpStatus; 17 | 18 | private Long time; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/FuRequestBodyData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import com.wdf.fudoc.components.bo.KeyValueTableBO; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import net.minidev.json.annotate.JsonIgnore; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * http请求body内容 13 | * 14 | * @author wangdingfu 15 | * @date 2022-09-18 13:56:32 16 | */ 17 | @Getter 18 | @Setter 19 | @JsonInclude(JsonInclude.Include.NON_NULL) 20 | public class FuRequestBodyData { 21 | 22 | /** 23 | * 请求参数 24 | */ 25 | private List formDataList; 26 | 27 | /** 28 | * 请求参数 29 | */ 30 | private List formUrlEncodedList; 31 | 32 | /** 33 | * json内容 34 | */ 35 | 36 | private String json; 37 | 38 | /** 39 | * 请求文本 40 | */ 41 | private String raw; 42 | 43 | /** 44 | * 请求字节流 45 | */ 46 | private byte[] binary; 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/FuRequestConsoleData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import com.wdf.fudoc.common.base.KeyValueBO; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2023-07-14 14:04:16 12 | */ 13 | @Getter 14 | @Setter 15 | public class FuRequestConsoleData { 16 | 17 | /** 18 | * 请求类型 19 | */ 20 | private String methodName; 21 | 22 | /** 23 | * 请求地址 24 | */ 25 | private String url; 26 | 27 | /** 28 | * 请求头 29 | */ 30 | private List headers; 31 | 32 | /** 33 | * 请求body 34 | */ 35 | private String requestBody; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/FuResponseConsoleData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import com.wdf.fudoc.common.base.KeyValueBO; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2023-07-14 14:04:16 12 | */ 13 | @Getter 14 | @Setter 15 | public class FuResponseConsoleData { 16 | 17 | /** 18 | * 请求类型 19 | */ 20 | private String httpType; 21 | 22 | /** 23 | * http响应码 24 | */ 25 | private int httpStatus; 26 | 27 | /** 28 | * 请求头 29 | */ 30 | private List headers; 31 | 32 | /** 33 | * 请求body 34 | */ 35 | private String responseBody; 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/GlobalHeaderData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import com.wdf.fudoc.request.constants.enumtype.HeaderScope; 4 | import com.wdf.fudoc.components.bo.KeyValueTableBO; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author wangdingfu 12 | * @date 2022-12-07 22:17:31 13 | */ 14 | @Getter 15 | @Setter 16 | public class GlobalHeaderData extends KeyValueTableBO { 17 | 18 | /** 19 | * 模块范围 20 | */ 21 | private HeaderScope headerScope; 22 | 23 | /** 24 | * 指定模块集合 25 | */ 26 | private List moduleIdList; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/JavaCodeAuthConfig.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2023-03-12 17:19:51 9 | */ 10 | @Getter 11 | @Setter 12 | public class JavaCodeAuthConfig extends BaseAuthConfig{ 13 | 14 | /** 15 | * java代码 16 | */ 17 | private String javaCode; 18 | 19 | @Override 20 | public String getSuffix() { 21 | return "java"; 22 | } 23 | 24 | @Override 25 | public String getScript() { 26 | return javaCode; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/PreOperationTableBO.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * 前置操作表格对象 8 | * 9 | * @author wangdingfu 10 | * @date 2022-12-26 22:43:04 11 | */ 12 | @Getter 13 | @Setter 14 | public class PreOperationTableBO { 15 | 16 | /** 17 | * 操作名称 18 | */ 19 | private String name; 20 | 21 | /** 22 | * 操作类型 23 | */ 24 | private String type; 25 | 26 | 27 | /** 28 | * 是否启用 29 | */ 30 | private boolean select; 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/ScriptConfigData.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import com.intellij.lang.javascript.JavaScriptFileType; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-06-06 20:15:02 10 | */ 11 | @Getter 12 | @Setter 13 | public class ScriptConfigData extends BaseAuthConfig { 14 | 15 | /** 16 | * 脚本 17 | */ 18 | private String script; 19 | 20 | @Override 21 | public String getSuffix() { 22 | return JavaScriptFileType.DEFAULT_EXTENSION; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/pojo/SpringBootEnvConfigInfo.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-12-18 23:33:48 11 | */ 12 | @Getter 13 | @Setter 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class SpringBootEnvConfigInfo { 17 | 18 | private Integer serverPort; 19 | 20 | private String contextPath; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/view/ResponseDownloadFileVIew.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.view; 2 | 3 | import lombok.Getter; 4 | 5 | import javax.swing.*; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2022-11-23 21:51:14 10 | */ 11 | public class ResponseDownloadFileVIew { 12 | @Getter 13 | private JPanel rootPanel; 14 | private JPanel showPanel; 15 | private JPanel downloadPanel; 16 | private JLabel fileNameLabel; 17 | private JButton downloadFileBtn; 18 | 19 | public ResponseDownloadFileVIew() { 20 | } 21 | 22 | 23 | public void setFileName(String fileName){ 24 | this.fileNameLabel.setText(fileName); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/request/view/widget/HttpToolBarWidget.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.request.view.widget; 2 | 3 | import com.wdf.fudoc.components.widget.FuWidget; 4 | import com.wdf.fudoc.request.pojo.FuHttpRequestData; 5 | 6 | import javax.swing.*; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2023-05-28 14:25:01 11 | */ 12 | public class HttpToolBarWidget implements FuWidget { 13 | 14 | private final JPanel toolBarPanel; 15 | 16 | 17 | public HttpToolBarWidget(JPanel toolBarPanel) { 18 | this.toolBarPanel = toolBarPanel; 19 | } 20 | 21 | @Override 22 | public JComponent getComponent() { 23 | return this.toolBarPanel; 24 | } 25 | 26 | @Override 27 | public void initData(FuHttpRequestData fuHttpRequestData) { 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/spring/handler/ConfigFileHandler.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.spring.handler; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2022-11-23 21:17:44 6 | */ 7 | public interface ConfigFileHandler { 8 | 9 | 10 | String getConfig(String key); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/spring/handler/PropertiesConfigFileHandler.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.spring.handler; 2 | 3 | 4 | import com.wdf.fudoc.util.FuStringUtils; 5 | 6 | import java.util.Objects; 7 | import java.util.Properties; 8 | 9 | /** 10 | * @author wangdingfu 11 | * @date 2022-11-23 21:18:12 12 | */ 13 | public class PropertiesConfigFileHandler implements ConfigFileHandler { 14 | 15 | private final Properties properties; 16 | 17 | public PropertiesConfigFileHandler(Properties properties) { 18 | this.properties = properties; 19 | } 20 | 21 | @Override 22 | public String getConfig(String key) { 23 | if (Objects.nonNull(properties) && FuStringUtils.isNotBlank(key)) { 24 | return this.properties.getProperty(key); 25 | } 26 | return FuStringUtils.EMPTY; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/storage/enumtype/FuStorageFileType.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.storage.enumtype; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * 存储文件类型 7 | * @author wangdingfu 8 | * @date 2023-05-15 13:01:26 9 | */ 10 | @Getter 11 | public enum FuStorageFileType { 12 | /** 13 | * json格式文件 14 | */ 15 | JSON(".json","json格式文件"), 16 | /** 17 | * fuApi格式文件 18 | */ 19 | FU_API(".fuApi","fuApi格式文件"); 20 | 21 | 22 | private final String suffix; 23 | 24 | private final String msg; 25 | 26 | FuStorageFileType(String suffix, String msg) { 27 | this.suffix = suffix; 28 | this.msg = msg; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/storage/handler/AbstractFuStorageHandler.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.storage.handler; 2 | 3 | import java.util.Objects; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2023-05-15 19:54:13 8 | */ 9 | public abstract class AbstractFuStorageHandler implements FuStorageHandler { 10 | 11 | /** 12 | * 数据内容 13 | */ 14 | protected T data; 15 | 16 | /** 17 | * 从磁盘里加载文件并将文件内容转换成需要的数据格式返回 18 | * 19 | * @return 内存操作的数据对象 20 | */ 21 | protected abstract T loadDataFromDisk(); 22 | 23 | /** 24 | * 将指定的数据持久化到磁盘上 25 | * 26 | * @param data 内存操作的数据对象 27 | */ 28 | protected abstract void writeDataToDisk(T data); 29 | 30 | @Override 31 | public T loadData() { 32 | if (Objects.isNull(this.data)) { 33 | return loadDataFromDisk(); 34 | } 35 | return this.data; 36 | } 37 | 38 | @Override 39 | public void saveData(T data) { 40 | this.data = data; 41 | writeDataToDisk(data); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/storage/handler/AbstractJsonDataStorage.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.storage.handler; 2 | 3 | /** 4 | * 持久化数据到json文件 数据格式为json格式 5 | * 6 | * @author wangdingfu 7 | * @date 2023-05-15 21:25:01 8 | */ 9 | public abstract class AbstractJsonDataStorage extends AbstractFuStorageHandler { 10 | 11 | 12 | @Override 13 | public T loadDataFromDisk() { 14 | return super.loadData(); 15 | } 16 | 17 | @Override 18 | protected void writeDataToDisk(T data) { 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/storage/handler/FuStorageHandler.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.storage.handler; 2 | 3 | import com.wdf.fudoc.storage.enumtype.FuStorageType; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2023-05-15 12:58:24 8 | */ 9 | public interface FuStorageHandler { 10 | 11 | /** 12 | * 获取当前持久化那种类型数据 13 | */ 14 | FuStorageType getType(); 15 | 16 | /** 17 | * 加载数据 18 | */ 19 | T loadData(); 20 | 21 | /** 22 | * 持久化数据到硬盘中 23 | * 24 | * @param data 数据对象 25 | */ 26 | void saveData(T data); 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/storage/handler/FuSyncApiProjectStorage.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.storage.handler; 2 | 3 | import com.wdf.fudoc.apidoc.config.state.FuDocSyncProjectSetting; 4 | import com.wdf.fudoc.apidoc.data.SyncApiConfigData; 5 | import com.wdf.fudoc.storage.enumtype.FuStorageType; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-05-15 21:26:28 10 | */ 11 | public class FuSyncApiProjectStorage extends AbstractJsonDataStorage{ 12 | public static final FuSyncApiProjectStorage INSTANCE = new FuSyncApiProjectStorage(); 13 | 14 | @Override 15 | public FuStorageType getType() { 16 | return FuStorageType.FU_CONFIG_YAPI; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/storage/test.http: -------------------------------------------------------------------------------- 1 | # @name 测试接口01 2 | POST http://localhost:8089/deme01 3 | Content-Type: application/json 4 | 5 | { 6 | 7 | } 8 | 9 | ### 测试接口2 10 | 11 | // 测试接口2 12 | POST http://localhost:8089/deme02 -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/test/action/editor/FormatActionProvider.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.test.action.editor; 2 | 3 | import com.intellij.openapi.actionSystem.ActionManager; 4 | import com.intellij.openapi.actionSystem.AnAction; 5 | import com.intellij.openapi.editor.Editor; 6 | import com.intellij.openapi.editor.markup.InspectionWidgetActionProvider; 7 | import org.jetbrains.annotations.NotNull; 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | /** 11 | * @author wangdingfu 12 | * @date 2022-09-08 21:09:36 13 | */ 14 | public class FormatActionProvider implements InspectionWidgetActionProvider { 15 | @Nullable 16 | @Override 17 | public AnAction createAction(@NotNull Editor editor) { 18 | return ActionManager.getInstance().getAction("fu.doc.format"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/test/action/editor/FuEditorFloatingToolbarProvider.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.test.action.editor; 2 | 3 | import com.intellij.openapi.editor.toolbar.floating.AbstractFloatingToolbarProvider; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2023-07-26 16:37:20 8 | */ 9 | public class FuEditorFloatingToolbarProvider extends AbstractFloatingToolbarProvider { 10 | 11 | public FuEditorFloatingToolbarProvider() { 12 | super("fu.doc.editor.format"); 13 | } 14 | 15 | @Override 16 | public boolean getAutoHideable() { 17 | return true; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/test/view/TestView1.form: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/test/view/ToolBarTestForm.form: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/util/ClipboardUtil.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.util; 2 | 3 | import java.awt.*; 4 | import java.awt.datatransfer.Clipboard; 5 | import java.awt.datatransfer.StringSelection; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @descption: 剪贴板工具类 10 | * @date 2022-05-30 23:26:09 11 | */ 12 | public class ClipboardUtil { 13 | 14 | 15 | /** 16 | * 将数据内容拷贝至剪贴板 17 | * 18 | * @param copyContent 需要拷贝到剪贴板的数据内容 19 | */ 20 | public static void copyToClipboard(String copyContent) { 21 | StringSelection selection = new StringSelection(copyContent); 22 | Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 23 | clipboard.setContents(selection, selection); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/util/CodeUtils.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.util; 2 | 3 | import java.util.Scanner; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2023-01-12 23:44:20 8 | */ 9 | public class CodeUtils { 10 | 11 | 12 | public static String getCpuId() { 13 | try { 14 | String[] linux = {"dmidecode", "-t", "processor", "|", "grep", "'ID'"}; 15 | String[] windows = {"wmic", "cpu", "get", "ProcessorId"}; 16 | 17 | // 获取系统信息 18 | String property = System.getProperty("os.name"); 19 | Process process = Runtime.getRuntime().exec(property.contains("Window") ? windows : linux); 20 | process.getOutputStream().close(); 21 | Scanner sc = new Scanner(process.getInputStream(), "utf-8"); 22 | sc.next(); 23 | return sc.next(); 24 | } catch (Exception e) { 25 | return null; 26 | } 27 | 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/util/ContentTypeUtils.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.util; 2 | 3 | /** 4 | * @author wangdingfu 5 | * @date 2023-05-21 17:18:14 6 | */ 7 | public class ContentTypeUtils { 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/util/FastJsonUtils.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.util; 2 | 3 | import cn.hutool.json.JSONUtil; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @descption: json工具类 8 | * @date 2022-05-31 00:10:21 9 | */ 10 | public class FastJsonUtils { 11 | 12 | /** 13 | * 格式化json字符串 14 | * 15 | * @param object 需要格式化的数据 16 | * @return 格式化后的json字符串 17 | */ 18 | public static String toJsonString(Object object) { 19 | return JSONUtil.toJsonPrettyStr(object); 20 | // return JSON.toJSONString(object, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/util/FuMessageUtils.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.util; 2 | 3 | import com.intellij.util.ui.JBUI; 4 | import cn.fudoc.common.msg.bo.FuMsgBO; 5 | import cn.fudoc.common.msg.FuMsgBuilder; 6 | import com.wdf.fudoc.components.message.MessageComponent; 7 | import cn.fudoc.common.enumtype.MessageType; 8 | 9 | import javax.swing.*; 10 | import java.awt.*; 11 | 12 | /** 13 | * @author wangdingfu 14 | * @date 2023-01-31 11:39:44 15 | */ 16 | public class FuMessageUtils { 17 | 18 | 19 | public static JPanel createMessage(FuMsgBO fuMsgBO) { 20 | JPanel rootPanel = new JPanel(new BorderLayout()); 21 | MessageComponent messageComponent = new MessageComponent(false); 22 | messageComponent.setMsg(fuMsgBO); 23 | JPanel messagePanel = messageComponent.getRootPanel(); 24 | messagePanel.setBorder(JBUI.Borders.emptyBottom(10)); 25 | rootPanel.add(messagePanel, BorderLayout.CENTER); 26 | return rootPanel; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/util/FuStringUtils.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.util; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2024-01-09 22:32:36 8 | */ 9 | public class FuStringUtils extends StringUtils { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/util/JTableUtils.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.util; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | import javax.swing.*; 6 | import javax.swing.table.TableColumn; 7 | 8 | /** 9 | * @author wangdingfu 10 | * @date 2022-09-06 11:37:18 11 | */ 12 | public class JTableUtils { 13 | 14 | 15 | 16 | public static void setupCheckboxColumn(@NotNull TableColumn column, int additionalWidth) { 17 | int columnWidth = new JCheckBox().getPreferredSize().width; 18 | int checkboxWidth = columnWidth + additionalWidth; 19 | column.setResizable(false); 20 | column.setPreferredWidth(checkboxWidth); 21 | column.setMaxWidth(checkboxWidth); 22 | column.setMinWidth(columnWidth); 23 | } 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/util/MarkdownToHtmlUtils.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.util; 2 | 3 | import org.commonmark.node.Node; 4 | import org.commonmark.parser.Parser; 5 | import org.commonmark.renderer.html.HtmlRenderer; 6 | 7 | /** 8 | * @author wangdingfu 9 | * @date 2023-01-10 13:25:22 10 | */ 11 | public class MarkdownToHtmlUtils { 12 | 13 | 14 | /** 15 | * markdown格式转换成HTML格式 16 | * @param markdown 17 | * @return 18 | */ 19 | public static String markdownToHtml(String markdown) { 20 | Parser parser = Parser.builder().build(); 21 | Node document = parser.parse(markdown); 22 | HtmlRenderer renderer = HtmlRenderer.builder().build(); 23 | return renderer.render(document); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/wdf/fudoc/util/MessageStyleUtil.java: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc.util; 2 | 3 | 4 | /** 5 | * @author wangdingfu 6 | * @date 2022-11-30 18:26:24 7 | */ 8 | public class MessageStyleUtil { 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/kotlin/com/github/wangdingfu/fuapidocplugin/MyBundle.kt: -------------------------------------------------------------------------------- 1 | package com.github.wangdingfu.fuapidocplugin 2 | 3 | import com.intellij.DynamicBundle 4 | import org.jetbrains.annotations.NonNls 5 | import org.jetbrains.annotations.PropertyKey 6 | 7 | @NonNls 8 | private const val BUNDLE = "messages.MyBundle" 9 | 10 | object MyBundle : DynamicBundle(BUNDLE) { 11 | 12 | @Suppress("SpreadOperator") 13 | @JvmStatic 14 | fun message(@PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any) = 15 | getMessage(key, *params) 16 | 17 | @Suppress("SpreadOperator", "unused") 18 | @JvmStatic 19 | fun messagePointer(@PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any) = 20 | getLazyMessage(key, *params) 21 | } 22 | -------------------------------------------------------------------------------- /src/main/kotlin/com/github/wangdingfu/fuapidocplugin/listeners/MyProjectManagerListener.kt: -------------------------------------------------------------------------------- 1 | package com.github.wangdingfu.fuapidocplugin.listeners 2 | 3 | import com.intellij.openapi.components.service 4 | import com.intellij.openapi.project.Project 5 | import com.intellij.openapi.project.ProjectManagerListener 6 | import com.github.wangdingfu.fuapidocplugin.services.MyProjectService 7 | 8 | internal class MyProjectManagerListener : ProjectManagerListener { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/kotlin/com/github/wangdingfu/fuapidocplugin/services/MyApplicationService.kt: -------------------------------------------------------------------------------- 1 | package com.github.wangdingfu.fuapidocplugin.services 2 | 3 | import com.github.wangdingfu.fuapidocplugin.MyBundle 4 | 5 | class MyApplicationService { 6 | 7 | init { 8 | println(MyBundle.message("applicationService")) 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/kotlin/com/github/wangdingfu/fuapidocplugin/services/MyProjectService.kt: -------------------------------------------------------------------------------- 1 | package com.github.wangdingfu.fuapidocplugin.services 2 | 3 | import com.intellij.openapi.project.Project 4 | import com.github.wangdingfu.fuapidocplugin.MyBundle 5 | 6 | class MyProjectService(project: Project) { 7 | 8 | init { 9 | println(MyBundle.message("projectService", project.name)) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/resources/META-INF/pluginIcon_backup.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/resources/icon/auth.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/body.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/src/main/resources/icon/body.png -------------------------------------------------------------------------------- /src/main/resources/icon/enviroment.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/file-binary.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/form.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/src/main/resources/icon/header.png -------------------------------------------------------------------------------- /src/main/resources/icon/http/all.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | ALL 13 | 14 | -------------------------------------------------------------------------------- /src/main/resources/icon/http/all_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | ALL 13 | 14 | -------------------------------------------------------------------------------- /src/main/resources/icon/http/delete.svg: -------------------------------------------------------------------------------- 1 | DEL -------------------------------------------------------------------------------- /src/main/resources/icon/http/delete_dark.svg: -------------------------------------------------------------------------------- 1 | DEL -------------------------------------------------------------------------------- /src/main/resources/icon/http/get.svg: -------------------------------------------------------------------------------- 1 | GET -------------------------------------------------------------------------------- /src/main/resources/icon/http/get_dark.svg: -------------------------------------------------------------------------------- 1 | GET -------------------------------------------------------------------------------- /src/main/resources/icon/http/patch.svg: -------------------------------------------------------------------------------- 1 | backgroundLayer 1PATCH -------------------------------------------------------------------------------- /src/main/resources/icon/http/patch_dark.svg: -------------------------------------------------------------------------------- 1 | backgroundLayer 1PATCH -------------------------------------------------------------------------------- /src/main/resources/icon/http/post.svg: -------------------------------------------------------------------------------- 1 | POST -------------------------------------------------------------------------------- /src/main/resources/icon/http/post_dark.svg: -------------------------------------------------------------------------------- 1 | POST -------------------------------------------------------------------------------- /src/main/resources/icon/http/put.svg: -------------------------------------------------------------------------------- 1 | PUT -------------------------------------------------------------------------------- /src/main/resources/icon/http/put_dark.svg: -------------------------------------------------------------------------------- 1 | PUT -------------------------------------------------------------------------------- /src/main/resources/icon/ignore.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/main/resources/icon/moreVertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/main/resources/icon/moreVertical_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/main/resources/icon/more_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/main/resources/icon/more_stroke.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/main/resources/icon/params.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/src/main/resources/icon/params.png -------------------------------------------------------------------------------- /src/main/resources/icon/raw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/rows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/src/main/resources/icon/rows.png -------------------------------------------------------------------------------- /src/main/resources/icon/script.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/src/main/resources/icon/send.png -------------------------------------------------------------------------------- /src/main/resources/icon/send.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/show.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/src/main/resources/icon/show.ico -------------------------------------------------------------------------------- /src/main/resources/icon/showdoc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/icon/spring.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/icon/sync.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/icon/upload_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/icon/urlencoded.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/icon/yapi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/src/main/resources/icon/yapi.png -------------------------------------------------------------------------------- /src/main/resources/template/auth/auth_config.js: -------------------------------------------------------------------------------- 1 | //定义token常量 便于下方使用 2 | const TOKEN_VAR = "ACCESS_TOKEN"; 3 | const EXPIRE_TIME = "EXPIRE_TIME"; 4 | 5 | const currentTime = new Date().getTime(); 6 | //从全局变量中获取超时时间 7 | const expireTime = fu.variable(EXPIRE_TIME); 8 | //如果当前时间超过超时时间 则认为已过期 9 | if (currentTime > expireTime) { 10 | //需要调用接口获取token 11 | login(); 12 | } 13 | 14 | /** 15 | * 登录接口 从服务端获取新的token 16 | */ 17 | function login() { 18 | //通过fu.doSend('')可以发起http请求 需要指定发起哪一个请求 具体请求在脚本右侧【新增http请求配置】添加 19 | const result = JSON.parse(fu.doSend('#1')); 20 | //将接口响应的token保存到全局变量中 21 | fu.setVariable(TOKEN_VAR, result.data.token); 22 | //设置过期时间到全局变量中 避免每次请求都调用登录方法 23 | fu.setVariable(EXPIRE_TIME, currentTime + 3600 * 1000); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/resources/template/auth/code_get_header.js: -------------------------------------------------------------------------------- 1 | //从全局请求头中获取请求头 2 | fu.header(''); -------------------------------------------------------------------------------- /src/main/resources/template/auth/code_get_variable.js: -------------------------------------------------------------------------------- 1 | //从全局变量中获取变量 2 | fu.variable(''); -------------------------------------------------------------------------------- /src/main/resources/template/auth/code_http.js: -------------------------------------------------------------------------------- 1 | //发起已经配置好的http请求 在右侧点击【新增http请求配置】配置需要发起的请求 2 | const result = fu.doSend('#1'); 3 | -------------------------------------------------------------------------------- /src/main/resources/template/auth/code_set_header.js: -------------------------------------------------------------------------------- 1 | //设置请求头到全局请求头中 对应项目的所有接口发起请求时 会自动携带全局请求头中的所有请求头 2 | fu.setHeader('', ''); -------------------------------------------------------------------------------- /src/main/resources/template/auth/code_set_variable.js: -------------------------------------------------------------------------------- 1 | //设置变量到全局变量中 可以在请求头或则接口中通过{{变量名}}来使用该变量 2 | fu.setVariable('', ''); -------------------------------------------------------------------------------- /src/main/resources/template/auth_config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wangdingfu/fu-api-doc-plugin/6ca0a1eaef699f0c614d71252955d59df4561634/src/main/resources/template/auth_config.js -------------------------------------------------------------------------------- /src/main/resources/template/console/request_console.ftl: -------------------------------------------------------------------------------- 1 | 2 | ${methodName} ${url} 3 | <#if headers??> 4 | <#list headers as header> 5 | ${header.key!''}: ${header.value!''} 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/template/console/response_console.ftl: -------------------------------------------------------------------------------- 1 | 2 | ${httpType!'HTTP/1.1'} ${httpStatus!''} 3 | <#if headers??> 4 | <#list headers as header> 5 | ${header.key!''}: ${header.value!''} 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/main/resources/template/fu_doc_enum.ftl: -------------------------------------------------------------------------------- 1 | <#if itemList??><#list itemList as item>`${item.code!''}-${item.msg!''}` -------------------------------------------------------------------------------- /src/main/resources/template/fu_doc_enum_table.ftl: -------------------------------------------------------------------------------- 1 | 2 | <#if title?? > 3 | - ${title!'枚举'} 4 | 5 | 6 | 7 | <#if itemList??> 8 | |编码|说明| 9 | |:-----|:-----| 10 | <#list itemList as item> 11 | |${item.code!''}| ${item.msg!''} | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/main/resources/template/fu_doc_object.ftl: -------------------------------------------------------------------------------- 1 | 2 | <#if requestParams??> 3 | |参数名|类型|必选|说明| 4 | |:---- |:---|:----- |----- | 5 | <#list requestParams as param> 6 | |${param.paramPrefix!''} ${param.paramName!''} | ${param.paramType!''} |${param.paramRequire!''} |${param.paramDesc!''} | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/resources/template/http/http_client.ftl: -------------------------------------------------------------------------------- 1 | ### ${apiName} 2 | 3 | ${methodName} ${url} 4 | <#if headers??> 5 | <#list headers as header> 6 | ${header.key}: ${header.value} 7 | 8 | 9 | 10 | ${requestBody!''} 11 | 12 | <#if responseFiles??> 13 | <#list responseFiles as responsefile> 14 | <> ${responsefile} 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/main/resources/template/issue.ftl: -------------------------------------------------------------------------------- 1 | :warning:_`[Report From Idea]-=${issueMd5}=-`_ 2 | 3 | **描述错误** 4 | ${message} 5 | 6 | **错误日志** 7 | ``` 8 | ${throwableText} 9 | ``` 10 | 11 | **环境(请填写以下信息):** 12 | 13 | <#if pluginName??> 14 | 插件信息: ${pluginName} - ${pluginVersion} 15 | 16 | 17 | ${fullApplicationName} ${(editionName??)?string('(${editionName})', '')} 18 | Build ${build}, built on ${buildDate} 19 | Runtime version: ${javaRuntimeVersion} ${osArch} 20 | VM: ${vmName} by ${vmVendor} 21 | Operating system: ${osInfo} 22 | JVM `file.encodeng` : ${encoding} 23 | 24 | 25 | **附加上下文** 26 | ${additionalInfo} 27 | -------------------------------------------------------------------------------- /src/main/resources/template/java_code.ftl: -------------------------------------------------------------------------------- 1 | package com.wdf.fudoc; 2 | 3 | import cn.hutool.json.JSON; 4 | 5 | /** 6 | * @author wangdingfu 7 | * @date 2023-03-12 17:40:35 8 | */ 9 | public class TestJava { 10 | 11 | public void paddingData(JSON response, JSON fuDoc) { 12 | fuDoc.putByPath("token", response.getByPath("data.token")); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/resources/template/yapi.ftl: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/test/java/com/wdfu/fudoc/FreemarkerContentTest.java: -------------------------------------------------------------------------------- 1 | package com.wdfu.fudoc; 2 | 3 | import cn.hutool.json.JSONUtil; 4 | import com.wdf.fudoc.apidoc.data.TemplateData; 5 | 6 | /** 7 | * @author wangdingfu 8 | * @date 2022-08-07 01:33:21 9 | */ 10 | public class FreemarkerContentTest { 11 | 12 | public static void main(String[] args) { 13 | TemplateData templateData = new TemplateData(); 14 | System.out.println(JSONUtil.toJsonStr(templateData)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/test/testData/rename/foo.xml: -------------------------------------------------------------------------------- 1 | 2 | 1>Foo 3 | 4 | -------------------------------------------------------------------------------- /src/test/testData/rename/foo_after.xml: -------------------------------------------------------------------------------- 1 | 2 | Foo 3 | 4 | --------------------------------------------------------------------------------