Skip to content

Commit ad64a2f

Browse files
committed
Добавлена обработка ошибки чтения содержимого xdto пакета
1 parent 953217c commit ad64a2f

File tree

7 files changed

+48
-67958
lines changed

7 files changed

+48
-67958
lines changed

src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/XDTOPackageConverter.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
package com.github._1c_syntax.bsl.reader.designer.converter;
2323

2424
import com.github._1c_syntax.bsl.mdo.XDTOPackage;
25+
import com.github._1c_syntax.bsl.mdo.storage.XdtoPackageData;
2526
import com.github._1c_syntax.bsl.reader.common.converter.AbstractReadConverter;
2627
import com.github._1c_syntax.bsl.reader.common.xstream.ExtendXStream;
2728
import com.thoughtworks.xstream.converters.UnmarshallingContext;
@@ -38,8 +39,16 @@ public class XDTOPackageConverter extends AbstractReadConverter {
3839
@Override
3940
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
4041
var readerContext = super.read(reader, context);
41-
readerContext.setValue(DATA_FIELD,
42-
ExtendXStream.read(reader, dataPath(readerContext.getCurrentPath(), readerContext.getName())));
42+
XdtoPackageData data;
43+
try {
44+
data = (XdtoPackageData) ExtendXStream.read(reader,
45+
dataPath(readerContext.getCurrentPath(), readerContext.getName()));
46+
} catch (Exception e) {
47+
// ничего не делаем, считаем файл битым
48+
data = XdtoPackageData.EMPTY;
49+
}
50+
51+
readerContext.setValue(DATA_FIELD, data);
4352
return readerContext.build();
4453
}
4554

src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/XDTOPackageConverter.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
package com.github._1c_syntax.bsl.reader.edt.converter;
2323

2424
import com.github._1c_syntax.bsl.mdo.XDTOPackage;
25+
import com.github._1c_syntax.bsl.mdo.storage.XdtoPackageData;
2526
import com.github._1c_syntax.bsl.reader.common.converter.AbstractReadConverter;
2627
import com.github._1c_syntax.bsl.reader.common.xstream.ExtendXStream;
2728
import com.thoughtworks.xstream.converters.UnmarshallingContext;
@@ -37,7 +38,15 @@ public class XDTOPackageConverter extends AbstractReadConverter {
3738
@Override
3839
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
3940
var readerContext = super.read(reader, context);
40-
readerContext.setValue(DATA_FIELD, ExtendXStream.read(reader, dataPath(readerContext.getCurrentPath())));
41+
XdtoPackageData data;
42+
try {
43+
data = (XdtoPackageData) ExtendXStream.read(reader, dataPath(readerContext.getCurrentPath()));
44+
} catch (Exception e) {
45+
// ничего не делаем, считаем файл битым
46+
data = XdtoPackageData.EMPTY;
47+
}
48+
49+
readerContext.setValue(DATA_FIELD, data);
4150
return readerContext.build();
4251
}
4352

src/test/resources/ext/designer/mdclasses/src/cf/XDTOPackages/ПакетXDTO1/Ext/Package.bin

Lines changed: 3 additions & 7523 deletions
Large diffs are not rendered by default.

src/test/resources/ext/edt/mdclasses/configuration/src/XDTOPackages/ПакетXDTO1/Package.xdto

Lines changed: 3 additions & 7523 deletions
Large diffs are not rendered by default.

src/test/resources/fixtures/mdclasses/Configuration.json

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,36 +16,11 @@
1616
"supportVariant": "NONE",
1717
"namespace": "http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8",
1818
"data": {
19-
"targetNamespace": "http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8",
20-
"imports": [
21-
[
22-
2
23-
],
24-
[]
25-
],
26-
"valueTypes": [
27-
[
28-
278
29-
],
30-
[]
31-
],
32-
"objectTypes": [
33-
[
34-
737
35-
],
36-
[]
37-
],
38-
"properties": [
39-
{
40-
"name": "performance",
41-
"type": "d2p1:Performance",
42-
"lowerBound": 0,
43-
"upperBound": 0,
44-
"nillable": false,
45-
"form": "Attribute",
46-
"typeDef": []
47-
}
48-
]
19+
"targetNamespace": "",
20+
"imports": [],
21+
"valueTypes": [],
22+
"objectTypes": [],
23+
"properties": []
4924
}
5025
}
5126
],
@@ -1843,19 +1818,19 @@
18431818
"modalityUseMode": "USE",
18441819
"moduleTypes": [
18451820
[
1846-
"ManagedApplicationModule",
1821+
"ExternalConnectionModule",
18471822
[
18481823
1
18491824
]
18501825
],
18511826
[
1852-
"SessionModule",
1827+
"ManagedApplicationModule",
18531828
[
18541829
1
18551830
]
18561831
],
18571832
[
1858-
"ExternalConnectionModule",
1833+
"SessionModule",
18591834
[
18601835
1
18611836
]

src/test/resources/fixtures/mdclasses/Configuration_edt.json

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,36 +16,11 @@
1616
"supportVariant": "NONE",
1717
"namespace": "http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8",
1818
"data": {
19-
"targetNamespace": "http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8",
20-
"imports": [
21-
[
22-
2
23-
],
24-
[]
25-
],
26-
"valueTypes": [
27-
[
28-
278
29-
],
30-
[]
31-
],
32-
"objectTypes": [
33-
[
34-
737
35-
],
36-
[]
37-
],
38-
"properties": [
39-
{
40-
"name": "performance",
41-
"type": "d2p1:Performance",
42-
"lowerBound": 0,
43-
"upperBound": 0,
44-
"nillable": false,
45-
"form": "Attribute",
46-
"typeDef": []
47-
}
48-
]
19+
"targetNamespace": "",
20+
"imports": [],
21+
"valueTypes": [],
22+
"objectTypes": [],
23+
"properties": []
4924
}
5025
}
5126
],
@@ -1838,19 +1813,19 @@
18381813
"modalityUseMode": "USE",
18391814
"moduleTypes": [
18401815
[
1841-
"ManagedApplicationModule",
1816+
"ExternalConnectionModule",
18421817
[
18431818
1
18441819
]
18451820
],
18461821
[
1847-
"SessionModule",
1822+
"ManagedApplicationModule",
18481823
[
18491824
1
18501825
]
18511826
],
18521827
[
1853-
"ExternalConnectionModule",
1828+
"SessionModule",
18541829
[
18551830
1
18561831
]

0 commit comments

Comments
 (0)