Skip to content

Commit 1b8dbb7

Browse files
committed
Хотфикс v0.9.1
Внесены правки для корректной работы в составе плагина SonarQube
2 parents d7ca406 + 102525c commit 1b8dbb7

File tree

11 files changed

+87
-15
lines changed

11 files changed

+87
-15
lines changed

build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ dependencies {
4141
implementation("com.github.1c-syntax", "utils", "0.2.1")
4242

4343
// быстрый поиск классов
44-
implementation("org.atteo.classindex", "classindex", "3.10")
45-
annotationProcessor("org.atteo.classindex", "classindex", "3.10")
44+
implementation("io.github.classgraph:classgraph:4.8.106")
4645

4746
// тестирование
4847
testImplementation("org.junit.jupiter", "junit-jupiter-api", junitVersion)

src/main/java/com/github/_1c_syntax/mdclasses/mdo/MDCommonAttribute.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.github._1c_syntax.mdclasses.mdo.attributes.AbstractMDOAttribute;
2525
import com.github._1c_syntax.mdclasses.mdo.attributes.CommonAttribute;
2626
import com.github._1c_syntax.mdclasses.mdo.metadata.Metadata;
27+
import com.github._1c_syntax.mdclasses.mdo.support.DataSeparation;
2728
import com.github._1c_syntax.mdclasses.mdo.support.MDOType;
2829
import com.github._1c_syntax.mdclasses.mdo.support.UseMode;
2930
import com.github._1c_syntax.mdclasses.unmarshal.wrapper.DesignerMDO;
@@ -62,7 +63,7 @@ public class MDCommonAttribute extends AbstractMDObjectBase {
6263
/**
6364
* Признак использования общего реквизита как разделителя данных
6465
*/
65-
private UseMode dataSeparation = UseMode.DONT_USE;
66+
private DataSeparation dataSeparation = DataSeparation.SEPARATE;
6667

6768
/**
6869
* Список объектов, использующих общий реквизит

src/main/java/com/github/_1c_syntax/mdclasses/mdo/MDOTemplate.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,12 @@
2424
import com.github._1c_syntax.mdclasses.mdo.children.template.TemplateData;
2525
import com.github._1c_syntax.mdclasses.mdo.children.template.TemplateType;
2626

27+
import java.nio.file.Path;
28+
2729
public interface MDOTemplate {
2830
TemplateType getTemplateType();
2931

3032
TemplateData<?> getTemplateData();
33+
34+
Path getTemplateDataPath();
3135
}

src/main/java/com/github/_1c_syntax/mdclasses/mdo/metadata/AttributeMetadata.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,12 @@
2121
*/
2222
package com.github._1c_syntax.mdclasses.mdo.metadata;
2323

24-
import org.atteo.classindex.IndexAnnotated;
2524

2625
import java.lang.annotation.ElementType;
2726
import java.lang.annotation.Retention;
2827
import java.lang.annotation.RetentionPolicy;
2928
import java.lang.annotation.Target;
3029

31-
@IndexAnnotated
3230
@Retention(RetentionPolicy.RUNTIME)
3331
@Target(ElementType.TYPE)
3432
public @interface AttributeMetadata {

src/main/java/com/github/_1c_syntax/mdclasses/mdo/metadata/Metadata.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
package com.github._1c_syntax.mdclasses.mdo.metadata;
2323

2424
import com.github._1c_syntax.mdclasses.mdo.support.MDOType;
25-
import org.atteo.classindex.IndexAnnotated;
2625

2726
import java.lang.annotation.ElementType;
2827
import java.lang.annotation.Retention;
@@ -32,7 +31,6 @@
3231
/**
3332
* Содержит набор метаинформации о типе метаданных
3433
*/
35-
@IndexAnnotated
3634
@Retention(RetentionPolicy.RUNTIME)
3735
@Target(ElementType.TYPE)
3836
public @interface Metadata {

src/main/java/com/github/_1c_syntax/mdclasses/mdo/metadata/MetadataStorage.java

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,21 @@
2121
*/
2222
package com.github._1c_syntax.mdclasses.mdo.metadata;
2323

24-
import org.atteo.classindex.ClassIndex;
24+
import io.github.classgraph.ClassGraph;
25+
import io.github.classgraph.ClassInfo;
26+
import lombok.extern.slf4j.Slf4j;
2527

2628
import java.lang.annotation.Annotation;
2729
import java.util.Collections;
2830
import java.util.HashMap;
2931
import java.util.Map;
32+
import java.util.Objects;
33+
import java.util.function.Function;
3034

3135
/**
3236
* Используется для хранения кэша метаинформации по MD классам
3337
*/
38+
@Slf4j
3439
public final class MetadataStorage {
3540

3641
private static final Map<Class<?>, Metadata> STORAGE = computeStorage(Metadata.class);
@@ -70,9 +75,31 @@ public static AttributeMetadata getAttribute(Class<?> clazz) {
7075
}
7176

7277
private static <T extends Annotation> Map<Class<?>, T> computeStorage(Class<T> annotation) {
73-
Map<Class<?>, T> localStorage = new HashMap<>();
74-
ClassIndex.getAnnotated(annotation).forEach(
75-
clazz -> localStorage.put(clazz, clazz.getAnnotation(annotation)));
76-
return Collections.unmodifiableMap(localStorage);
78+
try (var scanResult = new ClassGraph()
79+
.enableClassInfo()
80+
.enableAnnotationInfo()
81+
.acceptPackages("com.github._1c_syntax.mdclasses")
82+
.scan()) {
83+
84+
Map<Class<?>, T> localStorage = new HashMap<>();
85+
var classes = scanResult.getClassesWithAnnotation(annotation.getName());
86+
classes.stream()
87+
.map(getClassFromInfoClass())
88+
.filter(Objects::nonNull)
89+
.forEach(aClass -> localStorage.put(aClass, aClass.getAnnotation(annotation)));
90+
91+
return Collections.unmodifiableMap(localStorage);
92+
}
93+
}
94+
95+
private static Function<ClassInfo, ? extends Class<?>> getClassFromInfoClass() {
96+
return classInfo -> {
97+
try {
98+
return Class.forName(classInfo.getName());
99+
} catch (ClassNotFoundException e) {
100+
LOGGER.error("Cannot resolve class: " + classInfo.getName());
101+
return null;
102+
}
103+
};
77104
}
78105
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* This file is a part of MDClasses.
3+
*
4+
* Copyright © 2019 - 2021
5+
* Tymko Oleg <[email protected]>, Maximov Valery <[email protected]> and contributors
6+
*
7+
* SPDX-License-Identifier: LGPL-3.0-or-later
8+
*
9+
* MDClasses is free software; you can redistribute it and/or
10+
* modify it under the terms of the GNU Lesser General Public
11+
* License as published by the Free Software Foundation; either
12+
* version 3.0 of the License, or (at your option) any later version.
13+
*
14+
* MDClasses is distributed in the hope that it will be useful,
15+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17+
* Lesser General Public License for more details.
18+
*
19+
* You should have received a copy of the GNU Lesser General Public
20+
* License along with MDClasses.
21+
*/
22+
package com.github._1c_syntax.mdclasses.mdo.support;
23+
24+
import lombok.AllArgsConstructor;
25+
import lombok.Getter;
26+
import lombok.experimental.Accessors;
27+
28+
/**
29+
* Возможные варианты свойства `Разделение данных`
30+
*/
31+
@AllArgsConstructor
32+
public enum DataSeparation implements EnumWithValue {
33+
DONT_USE("DontUse"),
34+
SEPARATE("Separate");
35+
36+
@Getter
37+
@Accessors(fluent = true)
38+
private final String value;
39+
}

src/main/java/com/github/_1c_syntax/mdclasses/unmarshal/ExtendStaxDriver.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public class ExtendStaxDriver extends StaxDriver {
4141

4242
public ExtendStaxDriver(QNameMap qNameMap) {
4343
super(qNameMap);
44+
// Do not delete. Implementation via XMLInputFactoryImpl
45+
System.setProperty("javax.xml.stream.XMLInputFactory", "com.sun.xml.internal.stream.XMLInputFactoryImpl");
4446
}
4547

4648
@Override

src/main/java/com/github/_1c_syntax/mdclasses/unmarshal/XStreamFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.github._1c_syntax.mdclasses.mdo.support.ConfigurationExtensionPurpose;
4040
import com.github._1c_syntax.mdclasses.mdo.support.DataLockControlMode;
4141
import com.github._1c_syntax.mdclasses.mdo.support.DataPath;
42+
import com.github._1c_syntax.mdclasses.mdo.support.DataSeparation;
4243
import com.github._1c_syntax.mdclasses.mdo.support.FormType;
4344
import com.github._1c_syntax.mdclasses.mdo.support.MDOModule;
4445
import com.github._1c_syntax.mdclasses.mdo.support.MDOType;
@@ -357,6 +358,7 @@ private void registerConverters(XStream xStream) {
357358
xStream.registerConverter(new EnumConverter<>(ObjectBelonging.class));
358359
xStream.registerConverter(new EnumConverter<>(TemplateType.class));
359360
xStream.registerConverter(new EnumConverter<>(DataLockControlMode.class));
361+
xStream.registerConverter(new EnumConverter<>(DataSeparation.class));
360362
xStream.registerConverter(new EnumConverter<>(FormType.class));
361363
xStream.registerConverter(new AttributeConverter());
362364
xStream.registerConverter(new CompatibilityModeConverter());

src/main/java/com/github/_1c_syntax/mdclasses/unmarshal/wrapper/DesignerProperties.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.github._1c_syntax.mdclasses.mdo.children.template.TemplateType;
2626
import com.github._1c_syntax.mdclasses.mdo.support.ConfigurationExtensionPurpose;
2727
import com.github._1c_syntax.mdclasses.mdo.support.DataLockControlMode;
28+
import com.github._1c_syntax.mdclasses.mdo.support.DataSeparation;
2829
import com.github._1c_syntax.mdclasses.mdo.support.FormType;
2930
import com.github._1c_syntax.mdclasses.mdo.support.MessageDirection;
3031
import com.github._1c_syntax.mdclasses.mdo.support.ObjectBelonging;
@@ -151,5 +152,5 @@ public class DesignerProperties {
151152
@XStreamAlias("AutoUse")
152153
private UseMode autoUse = UseMode.DONT_USE;
153154
@XStreamAlias("DataSeparation")
154-
private UseMode dataSeparation = UseMode.DONT_USE;
155+
private DataSeparation dataSeparation = DataSeparation.DONT_USE;
155156
}

src/test/java/com/github/_1c_syntax/mdclasses/mdo/MDCommonAttributeTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*/
2222
package com.github._1c_syntax.mdclasses.mdo;
2323

24+
import com.github._1c_syntax.mdclasses.mdo.support.DataSeparation;
2425
import com.github._1c_syntax.mdclasses.mdo.support.MDOType;
2526
import com.github._1c_syntax.mdclasses.mdo.support.UseMode;
2627
import org.junit.jupiter.api.Test;
@@ -42,7 +43,7 @@ void testEDT() {
4243
checkNoModules(mdo);
4344
var commonAttribute = (MDCommonAttribute) mdo;
4445
assertThat(commonAttribute.getAutoUse()).isEqualTo(UseMode.USE);
45-
assertThat(commonAttribute.getDataSeparation()).isEqualTo(UseMode.DONT_USE);
46+
assertThat(commonAttribute.getDataSeparation()).isEqualTo(DataSeparation.DONT_USE);
4647
}
4748

4849
@Override
@@ -55,7 +56,7 @@ void testDesigner() {
5556
checkNoModules(mdo);
5657
var commonAttribute = (MDCommonAttribute) mdo;
5758
assertThat(commonAttribute.getAutoUse()).isEqualTo(UseMode.USE);
58-
assertThat(commonAttribute.getDataSeparation()).isEqualTo(UseMode.DONT_USE);
59+
assertThat(commonAttribute.getDataSeparation()).isEqualTo(DataSeparation.DONT_USE);
5960
}
6061

6162
}

0 commit comments

Comments
 (0)