Skip to content

Commit 97d3c2a

Browse files
committed
feat: check for filters
1 parent 260c159 commit 97d3c2a

File tree

7 files changed

+30
-18
lines changed

7 files changed

+30
-18
lines changed

CONTRIBUTING.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ When implementing a feature that should work across multiple languages (e.g., Ac
3535
```kotlin
3636
// common/extensionPoints/Activity.kt
3737
interface Activity {
38-
fun getActivities(project: Project): List<ActivityModel>
38+
fun getActivities(project: Project, module: Module? = null): List<ActivityModel>
3939

4040
companion object {
4141
val ACTIVITY_EP = ExtensionPointName.create<Activity>("com.github.xepozz.temporal.activity")
4242

43-
fun getActivities(project: Project): List<ActivityModel> {
44-
return ACTIVITY_EP.lazyDumbAwareExtensions(project).flatMap { it.getActivities(project) }.toList()
43+
fun getActivities(project: Project, module: Module? = null): List<ActivityModel> {
44+
return ACTIVITY_EP.lazyDumbAwareExtensions(project).flatMap { it.getActivities(project, module) }.toList()
4545
}
4646
}
4747
}
@@ -67,7 +67,7 @@ When implementing a feature that should work across multiple languages (e.g., Ac
6767
```kotlin
6868
// languages/php/endpoints/PhpActivity.kt
6969
class PhpActivity : Activity {
70-
override fun getActivities(project: Project): List<ActivityModel> {
70+
override fun getActivities(project: Project, module: Module?): List<ActivityModel> {
7171
// PHP-specific logic to find Activities
7272
}
7373
}

src/main/kotlin/com/github/xepozz/temporal/common/endpoints/TemporalActivityEndpointsProvider.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.intellij.microservices.endpoints.EndpointType
66
import com.intellij.microservices.endpoints.EndpointsFilter
77
import com.intellij.microservices.endpoints.EndpointsProvider
88
import com.intellij.microservices.endpoints.FrameworkPresentation
9+
import com.intellij.microservices.endpoints.ModuleEndpointsFilter
910
import com.intellij.navigation.ItemPresentation
1011
import com.intellij.openapi.project.Project
1112
import com.intellij.openapi.util.ModificationTracker
@@ -19,7 +20,8 @@ class TemporalActivityEndpointsProvider : EndpointsProvider<ActivityEndpointGrou
1920
override val presentation: FrameworkPresentation = FrameworkPresentation("Temporal Activity", "Temporal Activity", TemporalIcons.TEMPORAL)
2021

2122
override fun getEndpointGroups(project: Project, filter: EndpointsFilter): Iterable<ActivityEndpointGroup> {
22-
return Activity.getActivities(project).map { ActivityEndpointGroup(it) }
23+
if (filter !is ModuleEndpointsFilter) return emptyList()
24+
return Activity.getActivities(project, filter.module).map { ActivityEndpointGroup(it) }
2325
}
2426

2527
override fun getEndpoints(group: ActivityEndpointGroup): Iterable<ActivityEndpoint> {

src/main/kotlin/com/github/xepozz/temporal/common/endpoints/TemporalWorkflowEndpointsProvider.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.intellij.microservices.endpoints.EndpointType
66
import com.intellij.microservices.endpoints.EndpointsFilter
77
import com.intellij.microservices.endpoints.EndpointsProvider
88
import com.intellij.microservices.endpoints.FrameworkPresentation
9+
import com.intellij.microservices.endpoints.ModuleEndpointsFilter
910
import com.intellij.navigation.ItemPresentation
1011
import com.intellij.openapi.project.Project
1112
import com.intellij.openapi.util.ModificationTracker
@@ -19,7 +20,8 @@ class TemporalWorkflowEndpointsProvider : EndpointsProvider<WorkflowEndpointGrou
1920
override val presentation: FrameworkPresentation = FrameworkPresentation("Temporal Workflow", "Temporal Workflow", TemporalIcons.TEMPORAL)
2021

2122
override fun getEndpointGroups(project: Project, filter: EndpointsFilter): Iterable<WorkflowEndpointGroup> {
22-
return Workflow.getWorkflows(project).map { WorkflowEndpointGroup(it) }
23+
if (filter !is ModuleEndpointsFilter) return emptyList()
24+
return Workflow.getWorkflows(project, filter.module).map { WorkflowEndpointGroup(it) }
2325
}
2426

2527
override fun getEndpoints(group: WorkflowEndpointGroup): Iterable<WorkflowEndpoint> {
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package com.github.xepozz.temporal.common.extensionPoints
22

33
import com.intellij.openapi.extensions.ExtensionPointName
4+
import com.intellij.openapi.module.Module
45
import com.intellij.openapi.project.Project
56
import com.intellij.openapi.project.lazyDumbAwareExtensions
67
import com.github.xepozz.temporal.common.model.Activity as ActivityModel
78

89
interface Activity {
9-
fun getActivities(project: Project): List<ActivityModel>
10+
fun getActivities(project: Project, module: Module? = null): List<ActivityModel>
1011

1112
companion object {
1213
val ACTIVITY_EP = ExtensionPointName.create<Activity>("com.github.xepozz.temporal.activity")
1314

14-
fun getActivities(project: Project): List<ActivityModel> {
15-
return ACTIVITY_EP.lazyDumbAwareExtensions(project).flatMap { it.getActivities(project) }.toList()
15+
fun getActivities(project: Project, module: Module? = null): List<ActivityModel> {
16+
return ACTIVITY_EP.lazyDumbAwareExtensions(project).flatMap { it.getActivities(project, module) }.toList()
1617
}
1718
}
1819
}
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package com.github.xepozz.temporal.common.extensionPoints
22

33
import com.intellij.openapi.extensions.ExtensionPointName
4+
import com.intellij.openapi.module.Module
45
import com.intellij.openapi.project.Project
56
import com.intellij.openapi.project.lazyDumbAwareExtensions
67
import com.github.xepozz.temporal.common.model.Workflow as WorkflowModel
78

89
interface Workflow {
9-
fun getWorkflows(project: Project): List<WorkflowModel>
10+
fun getWorkflows(project: Project, module: Module? = null): List<WorkflowModel>
1011

1112
companion object {
1213
val WORKFLOW_EP = ExtensionPointName.create<Workflow>("com.github.xepozz.temporal.workflow")
1314

14-
fun getWorkflows(project: Project): List<WorkflowModel> {
15-
return WORKFLOW_EP.lazyDumbAwareExtensions(project).flatMap { it.getWorkflows(project) }.toList()
15+
fun getWorkflows(project: Project, module: Module? = null): List<WorkflowModel> {
16+
return WORKFLOW_EP.lazyDumbAwareExtensions(project).flatMap { it.getWorkflows(project, module) }.toList()
1617
}
1718
}
1819
}

src/main/kotlin/com/github/xepozz/temporal/languages/php/endpoints/PhpActivity.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,20 @@ import com.github.xepozz.temporal.common.extensionPoints.Activity
44
import com.github.xepozz.temporal.languages.php.index.PhpActivityClassIndex
55
import com.github.xepozz.temporal.languages.php.index.PhpActivityMethodIndex
66
import com.github.xepozz.temporal.languages.php.isActivity
7+
import com.intellij.openapi.module.Module
78
import com.intellij.openapi.project.Project
89
import com.intellij.psi.SmartPointerManager
10+
import com.intellij.psi.search.GlobalSearchScope
911
import com.intellij.util.indexing.FileBasedIndex
1012
import com.jetbrains.php.PhpIndex
1113
import com.github.xepozz.temporal.common.model.Activity as ActivityModel
1214

1315
class PhpActivity : Activity {
14-
override fun getActivities(project: Project): List<ActivityModel> {
16+
override fun getActivities(project: Project, module: Module?): List<ActivityModel> {
1517
val phpIndex = PhpIndex.getInstance(project)
1618
val smartPointerManager = SmartPointerManager.getInstance(project)
1719
val results = mutableListOf<ActivityModel>()
20+
val scope = module?.moduleContentScope ?: GlobalSearchScope.allScope(project)
1821

1922
val classFqns = mutableSetOf<String>()
2023
FileBasedIndex.getInstance().processAllKeys(PhpActivityClassIndex.NAME, { key ->
@@ -23,7 +26,7 @@ class PhpActivity : Activity {
2326
}, project)
2427

2528
classFqns.forEach { fqn ->
26-
phpIndex.getClassesByFQN(fqn).filter { it.isActivity() }.forEach { phpClass ->
29+
phpIndex.getClassesByFQN(fqn).filter { it.isActivity() && scope.contains(it.containingFile.virtualFile) }.forEach { phpClass ->
2730
results.add(
2831
ActivityModel(
2932
id = phpClass.name,
@@ -47,7 +50,7 @@ class PhpActivity : Activity {
4750
val classFqn = parts[0]
4851
val methodName = parts[1]
4952
phpIndex.getClassesByFQN(classFqn).forEach { phpClass ->
50-
phpClass.methods.find { it.name == methodName && it.isActivity() }?.let { method ->
53+
phpClass.methods.find { it.name == methodName && it.isActivity() && scope.contains(it.containingFile.virtualFile) }?.let { method ->
5154
results.add(
5255
ActivityModel(
5356
id = "${phpClass.name}::$methodName",

src/main/kotlin/com/github/xepozz/temporal/languages/php/endpoints/PhpWorkflow.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,20 @@ import com.github.xepozz.temporal.common.extensionPoints.Workflow
44
import com.github.xepozz.temporal.languages.php.index.PhpWorkflowClassIndex
55
import com.github.xepozz.temporal.languages.php.index.PhpWorkflowMethodIndex
66
import com.github.xepozz.temporal.languages.php.isWorkflow
7+
import com.intellij.openapi.module.Module
78
import com.intellij.openapi.project.Project
89
import com.intellij.psi.SmartPointerManager
10+
import com.intellij.psi.search.GlobalSearchScope
911
import com.intellij.util.indexing.FileBasedIndex
1012
import com.jetbrains.php.PhpIndex
1113
import com.github.xepozz.temporal.common.model.Workflow as WorkflowModel
1214

1315
class PhpWorkflow : Workflow {
14-
override fun getWorkflows(project: Project): List<WorkflowModel> {
16+
override fun getWorkflows(project: Project, module: Module?): List<WorkflowModel> {
1517
val phpIndex = PhpIndex.getInstance(project)
1618
val smartPointerManager = SmartPointerManager.getInstance(project)
1719
val results = mutableListOf<WorkflowModel>()
20+
val scope = module?.moduleContentScope ?: GlobalSearchScope.allScope(project)
1821

1922
val classFqns = mutableSetOf<String>()
2023
FileBasedIndex.getInstance().processAllKeys(PhpWorkflowClassIndex.NAME, { key ->
@@ -23,7 +26,7 @@ class PhpWorkflow : Workflow {
2326
}, project)
2427

2528
classFqns.forEach { fqn ->
26-
phpIndex.getClassesByFQN(fqn).filter { it.isWorkflow() }.forEach { phpClass ->
29+
phpIndex.getClassesByFQN(fqn).filter { it.isWorkflow() && scope.contains(it.containingFile.virtualFile) }.forEach { phpClass ->
2730
results.add(
2831
WorkflowModel(
2932
id = phpClass.name,
@@ -47,7 +50,7 @@ class PhpWorkflow : Workflow {
4750
val classFqn = parts[0]
4851
val methodName = parts[1]
4952
phpIndex.getClassesByFQN(classFqn).forEach { phpClass ->
50-
phpClass.ownMethods.find { it.name == methodName && it.isWorkflow() }?.let { method ->
53+
phpClass.ownMethods.find { it.name == methodName && it.isWorkflow() && scope.contains(it.containingFile.virtualFile) }?.let { method ->
5154
results.add(
5255
WorkflowModel(
5356
id = "${phpClass.name}::$methodName",

0 commit comments

Comments
 (0)