Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions idea-plugin/src/main/kotlin/com/itangcent/ai/AIService.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package com.itangcent.ai

import com.google.inject.ProvidedBy
import com.google.inject.Singleton
import com.itangcent.spi.SpiSingleBeanProvider

/**
* Interface for AI service operations
*/
@ProvidedBy(AIServiceProvider::class)
interface AIService {
/**
* Sends a prompt to the AI service and returns the response
Expand All @@ -27,3 +32,5 @@ interface AIService {
}
}

@Singleton
class AIServiceProvider : SpiSingleBeanProvider<AIService>()
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ class YapiExportAction : ApiExportAction("Export Yapi") {
builder.bindInstance(ExportChannel::class, ExportChannel.of("yapi"))
builder.bindInstance(ExportDoc::class, ExportDoc.of("request", "methodDoc"))

builder.bind(MethodDocBuilderListener::class) { it.with(CompositeMethodDocBuilderListener::class).singleton() }

builder.bind(MethodFilter::class) { it.with(ConfigurableMethodFilter::class).singleton() }

builder.bindInstance("file.save.default", "yapi.json")
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,41 +1,59 @@
package com.itangcent.idea.plugin.api.export.core

import com.google.inject.ImplementedBy
import com.google.inject.ProvidedBy
import com.google.inject.Singleton
import com.itangcent.common.model.MethodDoc
import com.itangcent.common.model.Param
import com.itangcent.common.model.Request
import com.itangcent.spi.SpiCompositeBeanProvider

@ImplementedBy(DefaultMethodDocBuilderListener::class)
@ProvidedBy(MethodDocBuilderListenerCompositeProvider::class)
interface MethodDocBuilderListener {

fun setName(exportContext: ExportContext,
methodDoc: MethodDoc, name: String)
fun setName(
exportContext: ExportContext,
methodDoc: MethodDoc, name: String
)

fun appendDesc(exportContext: ExportContext,
methodDoc: MethodDoc, desc: String?)
fun appendDesc(
exportContext: ExportContext,
methodDoc: MethodDoc, desc: String?
)

fun addParam(exportContext: ExportContext,
methodDoc: MethodDoc, param: Param)
fun addParam(
exportContext: ExportContext,
methodDoc: MethodDoc, param: Param
)

fun setRet(exportContext: ExportContext,
methodDoc: MethodDoc, ret: Any?)
fun setRet(
exportContext: ExportContext,
methodDoc: MethodDoc, ret: Any?
)

fun appendRetDesc(exportContext: ExportContext,
methodDoc: MethodDoc, retDesc: String?)
fun appendRetDesc(
exportContext: ExportContext,
methodDoc: MethodDoc, retDesc: String?
)

fun startProcessMethod(methodExportContext: MethodExportContext, methodDoc: MethodDoc)

fun processCompleted(methodExportContext: MethodExportContext, methodDoc: MethodDoc)
}

@Singleton
class MethodDocBuilderListenerCompositeProvider : SpiCompositeBeanProvider<MethodDocBuilderListener>()

//region utils------------------------------------------------------------------
fun MethodDocBuilderListener.addParam(exportContext: ExportContext,
methodDoc: MethodDoc, paramName: String, value: Any?, desc: String?, required: Boolean) {
fun MethodDocBuilderListener.addParam(
exportContext: ExportContext,
methodDoc: MethodDoc, paramName: String, value: Any?, desc: String?, required: Boolean
) {
addParam(exportContext, methodDoc, paramName, value, required, desc)
}

fun MethodDocBuilderListener.addParam(exportContext: ExportContext,
methodDoc: MethodDoc, paramName: String, value: Any?, required: Boolean, desc: String?) {
fun MethodDocBuilderListener.addParam(
exportContext: ExportContext,
methodDoc: MethodDoc, paramName: String, value: Any?, required: Boolean, desc: String?
) {
val param = Param()
param.name = paramName
param.value = value
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.itangcent.idea.plugin.api.export.core

import com.google.inject.ImplementedBy
import com.google.inject.ProvidedBy
import com.google.inject.Singleton
import com.itangcent.common.model.*
import com.itangcent.spi.SpiCompositeBeanProvider

@ImplementedBy(CompositeRequestBuilderListener::class)
@ProvidedBy(RequestBuilderListenerCompositeProvider::class)
interface RequestBuilderListener {

fun setName(
Expand Down Expand Up @@ -128,6 +130,9 @@ interface RequestBuilderListener {
fun processCompleted(methodExportContext: MethodExportContext, request: Request)
}

@Singleton
class RequestBuilderListenerCompositeProvider : SpiCompositeBeanProvider<RequestBuilderListener>()

//region utils------------------------------------------------------------------

fun RequestBuilderListener.addParam(
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
package com.itangcent.idea.plugin.api.export.spring

import com.google.inject.ImplementedBy
import com.google.inject.ProvidedBy
import com.google.inject.Singleton
import com.intellij.psi.PsiClass
import com.itangcent.spi.SpiCompositeBeanProvider

/*
* This interface defines a contract for resolving whether a given PsiClass
* has a Spring controller annotation. It is implemented by various classes
* to provide different strategies for determining the presence of controller annotations.
*/
@ImplementedBy(DefaultSpringControllerAnnotationResolver::class)
@ProvidedBy(SpringControllerAnnotationResolverCompositeProvider::class)
interface SpringControllerAnnotationResolver {
fun hasControllerAnnotation(psiClass: PsiClass): Boolean
}
}

@Singleton
class SpringControllerAnnotationResolverCompositeProvider :
SpiCompositeBeanProvider<SpringControllerAnnotationResolver>()
Original file line number Diff line number Diff line change
Expand Up @@ -381,10 +381,6 @@ open class SuvApiExporter {
builder.bindInstance(ExportChannel::class, ExportChannel.of("yapi"))
builder.bindInstance(ExportDoc::class, ExportDoc.of("request", "methodDoc"))

builder.bind(MethodDocBuilderListener::class) {
it.with(CompositeMethodDocBuilderListener::class).singleton()
}

builder.bindInstance("file.save.default", "api.json")
builder.bindInstance("file.save.last.location.key", "com.itangcent.api.export.path")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@ import com.itangcent.common.model.Request
import com.itangcent.common.utils.GsonUtils
import com.itangcent.common.utils.notNullOrEmpty
import com.itangcent.idea.plugin.settings.helper.AISettingsHelper
import com.itangcent.intellij.context.ActionContext
import com.itangcent.intellij.logger.Logger
import com.itangcent.spi.SpiCompositeLoader
import java.util.concurrent.ConcurrentHashMap

/**
Expand All @@ -32,11 +30,7 @@ class APITranslationHelper {
private lateinit var aiSettingsHelper: AISettingsHelper

@Inject
private lateinit var actionContext: ActionContext

private val aiService: AIService by lazy {
SpiCompositeLoader.load<AIService>(actionContext).first()
}
private lateinit var aiService: AIService

// Cache for translated content to avoid duplicate translations
private val translationCache = ConcurrentHashMap<String, String>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import com.itangcent.common.utils.trySet
import com.itangcent.idea.plugin.api.export.core.Folder
import com.itangcent.idea.plugin.rule.SuvRuleContext
import com.itangcent.idea.plugin.settings.helper.YapiSettingsHelper
import com.itangcent.intellij.config.ConfigReader
import com.itangcent.intellij.config.rule.RuleComputer
import com.itangcent.intellij.extend.asHashMap
import com.itangcent.intellij.extend.asMap
Expand All @@ -33,13 +32,10 @@ abstract class AbstractYapiApiHelper : YapiApiHelper {
protected lateinit var logger: Logger

@Inject
private val configReader: ConfigReader? = null
protected lateinit var ruleComputer: RuleComputer

@Inject
protected val ruleComputer: RuleComputer? = null

@Inject
protected val httpClientProvide: HttpClientProvider? = null
protected lateinit var httpClientProvide: HttpClientProvider

@Volatile
var init: Boolean = false
Expand Down Expand Up @@ -249,7 +245,7 @@ abstract class AbstractYapiApiHelper : YapiApiHelper {
synchronized(this)
{
if (!init) {
ruleComputer!!.computer(
ruleComputer.computer(
YapiClassExportRuleKeys.BEFORE_EXPORT, SuvRuleContext(),
null
)
Expand Down
Loading
Loading