@@ -5,14 +5,23 @@ import com.github.yusufugurozbek.testcontainers.port.updater.settings.MatchMode.
5
5
import com.intellij.database.dataSource.LocalDataSource
6
6
import com.intellij.database.util.common.isNotNullOrEmpty
7
7
8
- data class DataSourceUrl (val beforePort : String , val port : String , val afterPort : String? , val urlExtractor : DataSourceUrlExtractor = DataSourceUrlExtractor ()) {
8
+ data class DataSourceUrl (val beforePort : String , val port : String , val afterPort : String? , private val urlExtractor : DataSourceUrlExtractor ) {
9
+
10
+ constructor (beforePort: String , port: String , afterPort: String? ) : this (beforePort, port, afterPort, DataSourceUrlExtractor ())
9
11
10
12
init {
11
- extractor = urlExtractor
13
+ setUrlExtractor( urlExtractor)
12
14
}
13
15
14
16
companion object {
15
- lateinit var extractor: DataSourceUrlExtractor
17
+ private var extractor: DataSourceUrlExtractor = DataSourceUrlExtractor ()
18
+
19
+ fun setUrlExtractor (extractor : DataSourceUrlExtractor ) {
20
+ // Initialize extractor when first needed
21
+
22
+ this .extractor = extractor
23
+
24
+ }
16
25
17
26
fun from (dataSource : LocalDataSource ): DataSourceUrl ? = from(dataSource.url)
18
27
@@ -47,5 +56,18 @@ data class DataSourceUrl(val beforePort: String, val port: String, val afterPort
47
56
private fun equalsIgnoringPort (other : DataSourceUrl ): Boolean =
48
57
(this .beforePort == other.beforePort) and (this .afterPort == other.afterPort)
49
58
59
+ override fun equals (other : Any? ): Boolean {
60
+ if (this == = other) return true
61
+ if (other !is DataSourceUrl ) return false
62
+
63
+ return beforePort == other.beforePort &&
64
+ port == other.port &&
65
+ afterPort == other.afterPort
66
+ }
67
+
68
+ override fun hashCode (): Int {
69
+ return 31 * beforePort.hashCode() + port.hashCode() + (afterPort?.hashCode() ? : 0 )
70
+ }
71
+
50
72
override fun toString (): String = " $beforePort :$port$afterPort "
51
73
}
0 commit comments