@@ -60,17 +60,25 @@ open class TreeStructure(
60
60
61
61
override fun getChildElements (element : Any ): Array <Any > {
62
62
return when (element) {
63
- rootElement -> model. getAllContexts().toTypedArray ()
63
+ rootElement -> getAllContexts()
64
64
else -> getValidContributions()
65
- .flatMap { getChildElements(element, it) }
66
- .toTypedArray()
65
+ .flatMap { getChildElements(element, it) }
66
+ .toTypedArray()
67
+ }
68
+ }
69
+
70
+ private fun getAllContexts (): Array <Any > {
71
+ return try {
72
+ model.getAllContexts().toTypedArray()
73
+ } catch (e: Exception ) {
74
+ arrayOf(e)
67
75
}
68
76
}
69
77
70
78
private fun getChildElements (element : Any , contribution : ITreeStructureContribution ): Collection <Any > {
71
79
return try {
72
80
contribution.getChildElements(element)
73
- } catch (e: java.lang. Exception ) {
81
+ } catch (e: Exception ) {
74
82
logger<TreeStructure >().warn(e)
75
83
listOf (e)
76
84
}
@@ -101,24 +109,30 @@ open class TreeStructure(
101
109
}
102
110
103
111
override fun createDescriptor (element : Any , parent : NodeDescriptor <* >? ): NodeDescriptor <* > {
104
- val descriptor : NodeDescriptor < * > ? =
105
- getValidContributions()
106
- .map { it.createDescriptor(element, parent, project) }
107
- .find { it != null }
108
- if ( descriptor != null ) {
109
- return descriptor
110
- }
111
- return when (element) {
112
- is IContext -> ContextDescriptor (element, parent, model, project)
113
- is Exception -> ErrorDescriptor (element, parent, model, project)
114
- is Folder -> FolderDescriptor (element, parent, model, project)
115
- else -> Descriptor (element, null , parent, model, project)
112
+ return try {
113
+ val descriptor : NodeDescriptor < * > ? = getValidContributions()
114
+ .map { it.createDescriptor(element, parent, project) }
115
+ .find { it != null }
116
+ descriptor ? : when (element ) {
117
+ is IContext -> ContextDescriptor (element, parent, model, project)
118
+ is Exception -> ErrorDescriptor (element, parent, model, project)
119
+ is Folder -> FolderDescriptor (element, parent, model, project)
120
+ else -> Descriptor (element, null , parent, model, project)
121
+ }
122
+ } catch (e : Exception ) {
123
+ ErrorDescriptor (e , parent, model, project)
116
124
}
117
125
}
118
126
119
127
private fun getValidContributions (): Collection <ITreeStructureContribution > {
120
128
return contributions
121
- .filter { it.canContribute() }
129
+ .filter {
130
+ try {
131
+ it.canContribute()
132
+ } catch (e: Exception ) {
133
+ false
134
+ }
135
+ }
122
136
}
123
137
124
138
private fun getTreeStructureExtensions (model : IResourceModel ): List <ITreeStructureContribution > {
@@ -167,11 +181,7 @@ open class TreeStructure(
167
181
project
168
182
) {
169
183
override fun getLabel (element : C ? ): String {
170
- return if (element?.context?.name == null ) {
171
- " <unknown context>"
172
- } else {
173
- element.context.name
174
- }
184
+ return element?.name ? : " <unknown context>"
175
185
}
176
186
177
187
override fun getIcon (element : C ): Icon ? {
@@ -237,26 +247,22 @@ open class TreeStructure(
237
247
}
238
248
239
249
private class ErrorDescriptor (
240
- exception : java.lang. Exception ,
250
+ exception : Exception ,
241
251
parent : NodeDescriptor <* >? ,
242
252
model : IResourceModel ,
243
253
project : Project
244
- ) : Descriptor<java.lang. Exception>(
254
+ ) : Descriptor<Exception>(
245
255
exception,
246
256
null ,
247
257
parent,
248
258
model,
249
259
project
250
260
) {
251
- override fun getLabel (element : java.lang.Exception ? ): String {
252
- return getMessage(element)
253
- }
254
-
255
- private fun getMessage (e : Exception ? ): String {
256
- return toMessage(e)
261
+ override fun getLabel (element : Exception ? ): String {
262
+ return toMessage(element)
257
263
}
258
264
259
- override fun getIcon (element : java.lang. Exception ): Icon {
265
+ override fun getIcon (element : Exception ): Icon {
260
266
return AllIcons .General .BalloonError
261
267
}
262
268
}
0 commit comments