Skip to content

Commit edfaf56

Browse files
author
Uladzislau Kalesnikau
committed
Merge branch 'bugfix/IJMP-1948' into 'release/v1.2.3-221'
IJMP-1948 Fixed the IDE freeze issues See merge request ijmp/for-mainframe!587
2 parents fb7d831 + ad63901 commit edfaf56

3 files changed

Lines changed: 14 additions & 10 deletions

File tree

src/main/kotlin/eu/ibagroup/formainframe/dataops/attributes/MFRemoteAttributesServiceBase.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ package eu.ibagroup.formainframe.dataops.attributes
1313
import com.intellij.openapi.util.io.FileAttributes
1414
import eu.ibagroup.formainframe.config.connect.ConnectionConfigBase
1515
import eu.ibagroup.formainframe.dataops.DataOpsManager
16-
import eu.ibagroup.formainframe.utils.runWriteActionInEdtAndWait
1716
import eu.ibagroup.formainframe.utils.sendTopic
1817
import eu.ibagroup.formainframe.vfs.MFVirtualFile
1918
import eu.ibagroup.formainframe.vfs.MFVirtualFileSystem
@@ -35,7 +34,7 @@ private fun String.trimUrl(): String {
3534
* Base abstract service class to handle attributes on virtual file
3635
* @param dataOpsManager data ops manager to get component manager
3736
*/
38-
abstract class MFRemoteAttributesServiceBase<Connection: ConnectionConfigBase, Attributes : MFRemoteFileAttributes<Connection, *>>(
37+
abstract class MFRemoteAttributesServiceBase<Connection : ConnectionConfigBase, Attributes : MFRemoteFileAttributes<Connection, *>>(
3938
val dataOpsManager: DataOpsManager
4039
) : AttributesService<Attributes, MFVirtualFile> {
4140

@@ -98,9 +97,7 @@ abstract class MFRemoteAttributesServiceBase<Connection: ConnectionConfigBase, A
9897
*/
9998
private fun reassignAttributesToFile(file: MFVirtualFile, oldAttributes: Attributes, newAttributes: Attributes) {
10099
obtainAndRenameUrlDirIfNeeded(newAttributes)
101-
runWriteActionInEdtAndWait {
102-
reassignAttributesAfterUrlFolderRenaming(file, oldAttributes, newAttributes)
103-
}
100+
reassignAttributesAfterUrlFolderRenaming(file, oldAttributes, newAttributes)
104101
}
105102

106103
protected abstract fun buildUniqueAttributes(attributes: Attributes): Attributes

src/main/kotlin/eu/ibagroup/formainframe/dataops/fetch/RemoteFileFetchProviderBase.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,10 @@ abstract class RemoteFileFetchProviderBase<Connection : ConnectionConfigBase, Re
110110
progressIndicator: ProgressIndicator
111111
): List<File> {
112112
val fetched = fetchResponse(query, progressIndicator)
113-
return fetched.mapNotNull {
114-
convertResponseToFile(it)
113+
return runWriteActionInEdtAndWait {
114+
fetched.mapNotNull {
115+
convertResponseToFile(it)
116+
}
115117
}
116118
}
117119

src/main/kotlin/eu/ibagroup/formainframe/utils/openapiUtils.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
package eu.ibagroup.formainframe.utils
1212

1313
import com.intellij.openapi.Disposable
14-
import com.intellij.openapi.application.*
14+
import com.intellij.openapi.application.ApplicationManager
15+
import com.intellij.openapi.application.PathManager
16+
import com.intellij.openapi.application.runInEdt
17+
import com.intellij.openapi.application.runWriteAction
1518
import com.intellij.openapi.components.ComponentManager
1619
import com.intellij.openapi.diagnostic.Logger
1720
import com.intellij.openapi.diagnostic.logger
@@ -187,10 +190,12 @@ inline fun runWriteActionInEdt(crossinline block: () -> Unit) {
187190
}
188191
}
189192

190-
inline fun runWriteActionInEdtAndWait(crossinline block: () -> Unit) {
193+
inline fun <T> runWriteActionInEdtAndWait(crossinline block: () -> T): T {
194+
var result: T? = null
191195
runInEdtAndWait {
192-
runWriteAction(block)
196+
result = runWriteAction(block)
193197
}
198+
return result ?: throw Exception("runWriteAction did not return any result")
194199
}
195200

196201
/** Return the specified logger instance */

0 commit comments

Comments
 (0)