Skip to content

Commit 64f5816

Browse files
committed
minor refactor: remove hard compile-time dependency for ConsoleIvyPlugin
1 parent 0e13d00 commit 64f5816

2 files changed

Lines changed: 29 additions & 26 deletions

File tree

src/main/groovy/groovy/grape/GrapeIvy.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import org.apache.groovy.plugin.GroovyRunner
2828
import org.apache.groovy.plugin.GroovyRunnerRegistry
2929
import org.apache.ivy.Ivy
3030
import org.apache.ivy.core.IvyContext
31+
import org.apache.ivy.core.event.IvyListener
3132
import org.apache.ivy.core.event.download.PrepareDownloadEvent
3233
import org.apache.ivy.core.event.resolve.StartResolveEvent
3334
import org.apache.ivy.core.module.descriptor.Configuration
@@ -730,6 +731,10 @@ class GrapeIvy implements GrapeEngine {
730731
resolvedDependencies = []
731732
downloadedArtifacts = []
732733
}
734+
735+
IvyListener makeIvyListener(Closure c) {
736+
[progress: c] as IvyListener
737+
}
733738
}
734739

735740
@CompileStatic

subprojects/groovy-console/src/main/groovy/groovy/console/ui/ConsoleIvyPlugin.groovy

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@
1919
package groovy.console.ui
2020

2121
import groovy.grape.Grape
22-
import groovy.grape.GrapeIvy
23-
import org.apache.ivy.core.event.IvyListener
24-
import org.apache.ivy.core.event.download.PrepareDownloadEvent
25-
import org.apache.ivy.core.event.resolve.StartResolveEvent
22+
import groovy.grape.GrapeEngine
2623

2724
/**
2825
* Groovy Swing console.
@@ -36,29 +33,30 @@ class ConsoleIvyPlugin {
3633

3734
def addListener(Console console) {
3835
savedConsole = console
39-
40-
((GrapeIvy) Grape.instance).ivyInstance.eventManager.addIvyListener([progress: { ivyEvent ->
41-
switch (ivyEvent) {
42-
case StartResolveEvent:
43-
ivyEvent.moduleDescriptor.dependencies.each { it ->
44-
def name = it.toString()
45-
if (!resolvedDependencies.contains(name)) {
46-
resolvedDependencies << name
47-
savedConsole.showMessage "Resolving ${name} ..."
36+
GrapeEngine engine = Grape.instance
37+
if (engine?.class?.name == 'groovy.grape.ivy.GrapeIvy' && engine.metaClass.respondsTo(engine, 'getIvyInstance', Closure)) {
38+
engine.ivyInstance.eventManager.addIvyListener(engine.makeIvyListener{ ivyEvent ->
39+
switch (ivyEvent.class.simpleName) {
40+
case 'StartResolveEvent':
41+
ivyEvent.moduleDescriptor.dependencies.each { it ->
42+
def name = it.toString()
43+
if (!resolvedDependencies.contains(name)) {
44+
resolvedDependencies << name
45+
savedConsole.showMessage "Resolving ${name} ..."
46+
}
4847
}
49-
}
50-
break
51-
case PrepareDownloadEvent:
52-
ivyEvent.artifacts.each { it ->
53-
def name = it.toString()
54-
if (!downloadedArtifacts.contains(name)) {
55-
downloadedArtifacts << name
56-
savedConsole.showMessage "Downloading artifact ${name} ..."
48+
break
49+
case 'PrepareDownloadEvent':
50+
ivyEvent.artifacts.each { it ->
51+
def name = it.toString()
52+
if (!downloadedArtifacts.contains(name)) {
53+
downloadedArtifacts << name
54+
savedConsole.showMessage "Downloading artifact ${name} ..."
55+
}
5756
}
58-
}
59-
break
60-
}
61-
}] as IvyListener)
62-
57+
break
58+
}
59+
})
60+
}
6361
}
6462
}

0 commit comments

Comments
 (0)