Skip to content

Commit 4dec71b

Browse files
authored
Merge pull request #457 from 1c-syntax/feature/fix240531
Фиксы многопоточной работы
2 parents 6f78f00 + edbfd30 commit 4dec71b

20 files changed

+24
-8758
lines changed

src/main/java/com/github/_1c_syntax/bsl/reader/common/TransformationUtils.java

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -147,34 +147,10 @@ public Class<?> computeType(@NonNull ParameterizedType fieldClass) {
147147

148148
@Nullable
149149
private Method getMethod(@NonNull Class<?> clazz, @NonNull String methodName) {
150-
var classMethods = methods.get(clazz.getName());
151-
if (classMethods == null) {
152-
classMethods = new ConcurrentSkipListMap<>(String.CASE_INSENSITIVE_ORDER);
153-
}
154-
155-
var method = classMethods.get(methodName);
156-
// ключ метода в кэше есть, но метода нет
157-
if (method == null) {
158-
// ключ метода в кэше есть, но метода нет
159-
if (classMethods.containsKey(methodName)) {
160-
return null;
161-
}
162-
method = Arrays.stream(clazz.getDeclaredMethods())
163-
.filter(classMethod -> methodName.equalsIgnoreCase(classMethod.getName()))
150+
return methods.computeIfAbsent(clazz.getName(), k -> new ConcurrentSkipListMap<>(String.CASE_INSENSITIVE_ORDER))
151+
.computeIfAbsent(methodName, k -> Arrays.stream(clazz.getDeclaredMethods())
152+
.filter(m -> methodName.equalsIgnoreCase(m.getName()))
164153
.findFirst()
165-
.orElse(null);
166-
if (method != null) {
167-
saveMethod(clazz, classMethods, method, methodName);
168-
}
169-
}
170-
return method;
171-
}
172-
173-
private static void saveMethod(@NonNull Class<?> builderClass,
174-
@NonNull Map<String, Method> classMethods,
175-
@NonNull Method method,
176-
@NonNull String builderMethodName) {
177-
classMethods.put(builderMethodName, method);
178-
methods.put(builderClass.getName(), classMethods);
154+
.orElse(null));
179155
}
180156
}

src/main/java/com/github/_1c_syntax/bsl/reader/common/context/MDReaderContext.java

Lines changed: 20 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -107,46 +107,35 @@ public final void setValue(String methodName, Object value) {
107107

108108
@Override
109109
public Object build() {
110-
try {
111-
mdoReference = MdoReference.create(owner, mdoType, name);
112-
setValue(MDO_REFERENCE_FIELD_NAME, mdoReference);
110+
mdoReference = MdoReference.create(owner, mdoType, name);
111+
setValue(MDO_REFERENCE_FIELD_NAME, mdoReference);
113112

114-
if (MDChild.class.isAssignableFrom(realClass)) {
115-
setValue(OWNER_FIELD_NAME, owner);
116-
}
117-
118-
if (Subsystem.class.isAssignableFrom(realClass)) {
119-
setValue(PARENT_SUBSYSTEM_FIELD_NAME, owner);
120-
}
113+
if (MDChild.class.isAssignableFrom(realClass)) {
114+
setValue(OWNER_FIELD_NAME, owner);
115+
}
121116

122-
if (Form.class.isAssignableFrom(realClass)) {
123-
setValue(DATA_FIELD_NAME, mdReader.readFormData(currentPath, name, mdoType));
124-
}
117+
if (Subsystem.class.isAssignableFrom(realClass)) {
118+
setValue(PARENT_SUBSYSTEM_FIELD_NAME, owner);
119+
}
125120

126-
if (ChildrenOwner.class.isAssignableFrom(realClass)) {
127-
setValueChildren();
128-
}
121+
if (Form.class.isAssignableFrom(realClass)) {
122+
setValue(DATA_FIELD_NAME, mdReader.readFormData(currentPath, name, mdoType));
123+
}
129124

130-
if (ModuleOwner.class.isAssignableFrom(realClass)) {
131-
setValueModules();
132-
}
125+
if (ChildrenOwner.class.isAssignableFrom(realClass)) {
126+
setValueChildren();
127+
}
133128

134-
return super.build();
135-
} catch (Exception e) {
136-
LOGGER.warn("Can't read file '{}' - it's broken (object skipped) \n: ", currentPath, e);
137-
LOGGER.warn("Reader context\n: '{}'", this);
138-
LOGGER.warn("Builder content\n: '{}'", builder);
129+
if (ModuleOwner.class.isAssignableFrom(realClass)) {
130+
setValueModules();
139131
}
140-
return null;
132+
133+
return super.build();
141134
}
142135

143136
private void saveChildName(String collectionName, MDReaderContext child) {
144-
var collection = childrenContexts.get(collectionName);
145-
if (collection == null) {
146-
collection = Collections.synchronizedList(new ArrayList<>());
147-
}
148-
collection.add(child);
149-
childrenContexts.put(collectionName, collection);
137+
childrenContexts.computeIfAbsent(collectionName, k -> Collections.synchronizedList(new ArrayList<>()))
138+
.add(child);
150139
}
151140

152141
private void setValueChildren() {

src/main/resources/xsd/edt/CommonModule.xsd

Lines changed: 0 additions & 29 deletions
This file was deleted.

src/main/resources/xsd/edt/Configuration.xsd

Lines changed: 0 additions & 113 deletions
This file was deleted.

src/main/resources/xsd/edt/MDBase.xsd

Lines changed: 0 additions & 30 deletions
This file was deleted.

src/main/resources/xsd/edt/MDClasses.xsd

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/main/resources/xsd/original/DataBSL.xsd

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)