@@ -26,7 +26,8 @@ import com.intellij.openapi.roots.OrderEnumerator
26
26
27
27
class AxonVersionService (val project : Project ) {
28
28
private var enabled = false
29
- private var messageShown = false
29
+ private var messageShownOutdated = false
30
+ private var messageShownExperimental = false
30
31
31
32
private val regex = Regex (" .*(axon-.*)-(\\ d+)\\ .(\\ d+)\\ .(\\ d+)(.*)\\ .jar" )
32
33
@@ -48,21 +49,27 @@ class AxonVersionService(val project: Project) {
48
49
}
49
50
50
51
val outdatedDeps = versions.outdated()
51
- if (outdatedDeps.isEmpty()) {
52
+ val experimentalDeps = versions.experimental()
53
+ if (outdatedDeps.isEmpty() && experimentalDeps.isEmpty()) {
52
54
enabled = true
53
- if (messageShown) {
54
- showReEnabledMessage()
55
+ if (messageShownOutdated) {
56
+ showReEnabledMessageForOutdatedDeps()
57
+ }
58
+ if (messageShownExperimental) {
59
+ showReEnabledMessageForExperimentalDeps()
55
60
}
56
61
return
57
62
}
63
+
58
64
enabled = false
59
- if (messageShown) {
60
- // Was already shown before
61
- return
65
+ if (! messageShownOutdated && outdatedDeps.isNotEmpty()) {
66
+ showDisabledMessage(outdatedDeps)
67
+ messageShownOutdated = true
68
+ }
69
+ if (! messageShownExperimental && experimentalDeps.isNotEmpty()) {
70
+ showExperimentalMessage(experimentalDeps)
71
+ messageShownExperimental = true
62
72
}
63
-
64
- showDisabledMessage(outdatedDeps)
65
- messageShown = true
66
73
}
67
74
68
75
private fun showDisabledMessage (outdatedDeps : List <AxonDependencyVersion >) {
@@ -76,25 +83,49 @@ class AxonVersionService(val project: Project) {
76
83
.notify(project)
77
84
}
78
85
79
- private fun showReEnabledMessage () {
86
+ private fun showExperimentalMessage (outdatedDeps : List <AxonDependencyVersion >) {
87
+ NotificationGroupManager .getInstance()
88
+ .getNotificationGroup(" AxonNotificationGroup" )
89
+ .createNotification(
90
+ " Your project has an Axon Framework version greater than 4, which is experimental. The specific dependencies are: " + outdatedDeps.joinToString(
91
+ separator = " ,"
92
+ ) { it.dependency.moduleName + " (${it.toVersionString()} )" }, NotificationType .ERROR
93
+ )
94
+ .notify(project)
95
+ }
96
+
97
+ private fun showReEnabledMessageForOutdatedDeps () {
98
+ NotificationGroupManager .getInstance()
99
+ .getNotificationGroup(" AxonNotificationGroup" )
100
+ .createNotification(
101
+ " Your project no longer has any experimental Axon Framework dependencies. Plugin functionality has been re-enabled." ,
102
+ NotificationType .INFORMATION
103
+ )
104
+ .notify(project)
105
+ messageShownOutdated = false
106
+ }
107
+
108
+
109
+ private fun showReEnabledMessageForExperimentalDeps () {
80
110
NotificationGroupManager .getInstance()
81
111
.getNotificationGroup(" AxonNotificationGroup" )
82
112
.createNotification(
83
113
" Your project no longer has any outdated Axon Framework dependencies. Plugin functionality has been re-enabled." ,
84
114
NotificationType .INFORMATION
85
115
)
86
116
.notify(project)
87
- messageShown = false
117
+ messageShownExperimental = false
88
118
}
89
119
90
120
fun isAxonEnabled (useCache : Boolean = false): Boolean {
91
- if (useCache) {
121
+ if (useCache) {
92
122
return enabled
93
123
}
94
124
return getAxonVersions().outdated().isEmpty()
95
125
}
96
126
97
127
private fun List<AxonDependencyVersion>.outdated () = filter { it.dependency.checkVersion && it.major < 4 }
128
+ private fun List<AxonDependencyVersion>.experimental () = filter { it.dependency.checkVersion && it.major > 4 }
98
129
99
130
fun getAxonVersions () = OrderEnumerator .orderEntries(project)
100
131
.librariesOnly()
@@ -111,13 +142,21 @@ class AxonVersionService(val project: Project) {
111
142
val match = regex.find(name)!!
112
143
val (moduleName, majorVersion, minorVersion, patchVersion, remaining) = match.destructured
113
144
val dependency = AxonDependency .entries.firstOrNull { it.moduleName == moduleName } ? : return null
114
- return AxonDependencyVersion (dependency,
145
+ return AxonDependencyVersion (
146
+ dependency,
115
147
Integer .parseInt(majorVersion),
116
148
Integer .parseInt(minorVersion),
117
- Integer .parseInt(patchVersion), remaining)
149
+ Integer .parseInt(patchVersion), remaining
150
+ )
118
151
}
119
152
120
- data class AxonDependencyVersion (val dependency : AxonDependency , val major : Int , val minor : Int , val patch : Int , val remaining : String ) {
153
+ data class AxonDependencyVersion (
154
+ val dependency : AxonDependency ,
155
+ val major : Int ,
156
+ val minor : Int ,
157
+ val patch : Int ,
158
+ val remaining : String
159
+ ) {
121
160
fun toVersionString () = " $major .$minor .$patch$remaining "
122
161
}
123
162
}
0 commit comments