Обработка отсутствия элементов перечислений#461
Conversation
|
Warning Review failedThe pull request is closed. WalkthroughВ данном изменении была введена возможность маппинга неизвестных значений перечислений на значение Changes
Sequence Diagram(s)sequenceDiagram
participant Application
participant EnumConverter
participant Logger
Application->>EnumConverter: fromString(value)
EnumConverter->>Logger: log warning if value is unknown
EnumConverter->>Application: return UNKNOWN if value is unknown
Assessment against linked issues
Poem
Tip AI model upgrade
|
There was a problem hiding this comment.
Actionable comments posted: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files ignored due to path filters (1)
src/test/resources/fixtures/mdclasses_unknown/Configuration_edt.jsonis excluded by!**/*.json
Files selected for processing (30)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/ApplicationRunMode.java (2 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/AutoRecordType.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/ConfigurationExtensionPurpose.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataLockControlMode.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataSeparation.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataSetType.java (2 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/EnumWithValue.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/FormType.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/IndexingType.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/MessageDirection.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/ObjectBelonging.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/ReturnValueReuse.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/ReuseSessions.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/RoleRight.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/ScriptVariant.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/TemplateType.java (2 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/TransferDirection.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/UseMode.java (1 hunks)
- src/main/java/com/github/_1c_syntax/bsl/mdo/support/UsePurposes.java (3 hunks)
- src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (3 hunks)
- src/main/java/com/github/_1c_syntax/bsl/reader/common/xstream/ExtendXStream.java (2 hunks)
- src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/Unmarshaller.java (3 hunks)
- src/test/java/com/github/_1c_syntax/bsl/mdclasses/ConfigurationTest.java (1 hunks)
- src/test/java/com/github/_1c_syntax/bsl/mdclasses/MDClassesTest.java (2 hunks)
- src/test/java/com/github/_1c_syntax/bsl/smoke/EnumsTest.java (1 hunks)
- src/test/resources/ext/edt/mdclasses_unknown/configuration/.project (1 hunks)
- src/test/resources/ext/edt/mdclasses_unknown/configuration/.settings/org.eclipse.core.resources.prefs (1 hunks)
- src/test/resources/ext/edt/mdclasses_unknown/configuration/DT-INF/PROJECT.PMF (1 hunks)
- src/test/resources/ext/edt/mdclasses_unknown/configuration/src/Configuration/Configuration.mdo (1 hunks)
- src/test/resources/ext/edt/mdclasses_unknown/configuration/src/Configuration/ManagedApplicationModule.bsl (1 hunks)
Files skipped from review due to trivial changes (4)
- src/test/resources/ext/edt/mdclasses_unknown/configuration/.project
- src/test/resources/ext/edt/mdclasses_unknown/configuration/.settings/org.eclipse.core.resources.prefs
- src/test/resources/ext/edt/mdclasses_unknown/configuration/DT-INF/PROJECT.PMF
- src/test/resources/ext/edt/mdclasses_unknown/configuration/src/Configuration/ManagedApplicationModule.bsl
Additional comments not posted (32)
src/main/java/com/github/_1c_syntax/bsl/mdo/support/EnumWithValue.java (1)
38-40: Отличное дополнение метода по умолчанию.Метод
isUnknown()предоставляет разумное значение по умолчанию для перечислений.src/main/java/com/github/_1c_syntax/bsl/mdo/support/AutoRecordType.java (1)
36-41: Хорошее добавление для обработки неизвестных значений.Константа
UNKNOWNи переопределенный методisUnknown()обеспечивают правильную обработку неизвестных значений.src/main/java/com/github/_1c_syntax/bsl/mdo/support/FormType.java (1)
36-41: Хорошее добавление для обработки неизвестных значений.Константа
UNKNOWNи переопределенный методisUnknown()обеспечивают правильную обработку неизвестных значений.src/main/java/com/github/_1c_syntax/bsl/mdo/support/ObjectBelonging.java (1)
36-41: Хорошее добавление для обработки неизвестных значений.Константа
UNKNOWNи переопределенный методisUnknown()обеспечивают правильную обработку неизвестных значений.src/main/java/com/github/_1c_syntax/bsl/mdo/support/MessageDirection.java (1)
36-41: Хорошее добавление для обработки неизвестных значений.Константа
UNKNOWNи переопределенный методisUnknown()обеспечивают правильную обработку неизвестных значений.src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataSeparation.java (1)
36-41: Добавление константыUNKNOWNи методаisUnknown().Изменения соответствуют заявленным целям. Константа
UNKNOWNи методisUnknown()добавлены корректно.src/main/java/com/github/_1c_syntax/bsl/mdo/support/UseMode.java (1)
37-42: Добавление константыUNKNOWNи методаisUnknown().Изменения соответствуют заявленным целям. Константа
UNKNOWNи методisUnknown()добавлены корректно.src/main/java/com/github/_1c_syntax/bsl/mdo/support/TransferDirection.java (1)
37-42: Добавление константыUNKNOWNи методаisUnknown().Изменения соответствуют заявленным целям. Константа
UNKNOWNи методisUnknown()добавлены корректно.src/main/java/com/github/_1c_syntax/bsl/mdo/support/ReuseSessions.java (1)
38-43: Добавление константыUNKNOWNи методаisUnknown().Изменения соответствуют заявленным целям. Константа
UNKNOWNи методisUnknown()добавлены корректно.src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataLockControlMode.java (1)
37-42: Добавление константыUNKNOWNи методаisUnknown().Изменения соответствуют заявленным целям. Константа
UNKNOWNи методisUnknown()добавлены корректно.src/main/java/com/github/_1c_syntax/bsl/mdo/support/ConfigurationExtensionPurpose.java (1)
38-43: Добавлен новый элемент UNKNOWN в перечисление.Добавление элемента
UNKNOWNи переопределение методаisUnknown()для обработки неизвестных значений перечислений. Это изменение соответствует поставленной задаче и улучшает устойчивость к ошибкам.src/main/java/com/github/_1c_syntax/bsl/mdo/support/ReturnValueReuse.java (1)
38-43: Добавлен новый элемент UNKNOWN в перечисление.Добавление элемента
UNKNOWNи переопределение методаisUnknown()для обработки неизвестных значений перечислений. Это изменение соответствует поставленной задаче и улучшает устойчивость к ошибкам.src/main/java/com/github/_1c_syntax/bsl/mdo/support/IndexingType.java (1)
37-42: Добавлен новый элемент UNKNOWN в перечисление.Добавление элемента
UNKNOWNи переопределение методаisUnknown()для обработки неизвестных значений перечислений. Это изменение соответствует поставленной задаче и улучшает устойчивость к ошибкам.src/main/java/com/github/_1c_syntax/bsl/mdo/support/TemplateType.java (1)
41-46: Добавлен новый элемент UNKNOWN в перечисление.Добавление элемента
UNKNOWNи переопределение методаisUnknown()для обработки неизвестных значений перечислений. Это изменение соответствует поставленной задаче и улучшает устойчивость к ошибкам.src/main/java/com/github/_1c_syntax/bsl/mdo/support/ApplicationRunMode.java (1)
38-43: Добавлен новый элемент UNKNOWN в перечисление.Добавление элемента
UNKNOWNи переопределение методаisUnknown()для обработки неизвестных значений перечислений. Это изменение соответствует поставленной задаче и улучшает устойчивость к ошибкам.src/main/java/com/github/_1c_syntax/bsl/mdo/support/UsePurposes.java (1)
38-43: Правильно добавлен элемент UNKNOWN в перечисление.Элемент
UNKNOWNдобавлен корректно с переопределением методаisUnknown().src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataSetType.java (1)
34-39: Правильно добавлен элемент UNKNOWN в перечисление.Элемент
UNKNOWNдобавлен корректно с переопределением методаisUnknown().src/test/java/com/github/_1c_syntax/bsl/mdclasses/MDClassesTest.java (2)
35-35: Обновите ожидаемый размер конфигураций.Ожидаемый размер конфигураций обновлен с 9 до 10.
59-59: Обновите ожидаемый размер конфигураций.Ожидаемый размер конфигураций обновлен с 13 до 14.
src/test/resources/ext/edt/mdclasses_unknown/configuration/src/Configuration/Configuration.mdo (2)
16-16: Обновите режим запуска по умолчанию.Режим запуска по умолчанию изменен на
ManagedApplication_new.
17-17: Обновите назначение использования по умолчанию.Назначение использования по умолчанию изменено на
PersonalComputer_new.src/test/java/com/github/_1c_syntax/bsl/smoke/EnumsTest.java (1)
35-50: Добавлен тест для проверки неизвестных элементов перечислений.Тест
unknownдобавлен корректно и проверяет наличие неизвестных элементов перечислений.src/main/java/com/github/_1c_syntax/bsl/mdo/support/ScriptVariant.java (1)
39-44: Изменение одобрено.Добавление константы
UNKNOWNи переопределение методаisUnknownдля обработки неизвестных значений перечисления выглядит корректно.src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (4)
38-40: Изменение одобрено.Добавление констант
URL_TEMPLATEиWARN_TEMPLATEдля логирования ошибок при парсинге неизвестных элементов перечисления выглядит корректно.
51-55: Изменение одобрено.Добавление логики для обработки перечисления
UsePurposesв методеfromStringвыглядит корректно.
73-80: Изменение одобрено.Добавление метода
fromValueStringUsePurposesдля обработки значений перечисленияUsePurposesвыглядит корректно.
83-89: Изменение одобрено.Добавление метода
unknownдля возврата неизвестного значения перечисления выглядит корректно.src/main/java/com/github/_1c_syntax/bsl/mdo/support/RoleRight.java (1)
104-109: Изменение одобрено.Добавление константы
UNKNOWNи переопределение методаisUnknownдля обработки неизвестных значений перечисления выглядит корректно.src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/Unmarshaller.java (2)
49-49: Изменение одобрено.Добавление константы
USE_PURPOSES_NODEдля обработки нового узла в процессе анмаршалинга выглядит корректно.
156-160: Изменение одобрено.Добавление логики для обработки узла
USE_PURPOSES_NODEв методеreadPropertiesNodeвыглядит корректно.src/main/java/com/github/_1c_syntax/bsl/reader/common/xstream/ExtendXStream.java (1)
267-267: Изменение одобрено.Регистрация нового конвертера для перечисления
UsePurposesв методеsetupConvertersвыглядит корректно.src/test/java/com/github/_1c_syntax/bsl/mdclasses/ConfigurationTest.java (1)
244-252: Добавлен новый тестовый методunknownEnums.Метод добавляет тест для проверки неизвестных значений перечислений. Код выглядит корректно и соответствует описанным задачам PR.
There was a problem hiding this comment.
Actionable comments posted: 0
Outside diff range and nitpick comments (1)
src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (1)
25-27: Проверьте порядок импорта.Импорт
UsePurposesдобавлен, но порядок импортов не всегда соблюдается.
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files ignored due to path filters (1)
src/test/resources/fixtures/mdclasses_ext/Configuration_edt.jsonis excluded by!**/*.json
Files selected for processing (5)
- src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (3 hunks)
- src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/Unmarshaller.java (4 hunks)
- src/test/java/com/github/_1c_syntax/bsl/smoke/EnumsTest.java (1 hunks)
- src/test/resources/ext/edt/mdclasses_ext/configuration/src/Styles/Стиль1/Стиль1.mdo (1 hunks)
- src/test/resources/ext/edt/mdclasses_ext/configuration/src/Styles/Стиль2/Стиль2.mdo (1 hunks)
Files skipped from review due to trivial changes (2)
- src/test/resources/ext/edt/mdclasses_ext/configuration/src/Styles/Стиль1/Стиль1.mdo
- src/test/resources/ext/edt/mdclasses_ext/configuration/src/Styles/Стиль2/Стиль2.mdo
Files skipped from review as they are similar to previous changes (1)
- src/test/java/com/github/_1c_syntax/bsl/smoke/EnumsTest.java
Additional comments not posted (11)
src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (7)
35-41: Добавлены новые шаблоны URL и предупрежденийДобавлены константы
URL_TEMPLATEиWARN_TEMPLATEдля формирования сообщений об ошибках.
51-56: Изменения в методеfromStringМетод
fromStringтеперь обрабатываетUsePurposesотдельно. Это улучшение для обработки специфичных перечислений.
58-61: Добавлена обработка неизвестных значенийДобавлена проверка на
nullи соответствующее предупреждение в логах. Это улучшает обработку ошибок.
71-72: МетодfromValueвозвращает null для неизвестных значенийМетод
fromValueвозвращаетnull, если значение не найдено. Это корректное поведение.
74-82: Добавлен методfromValueStringUsePurposesНовый метод для обработки значений
UsePurposes. Это улучшает поддержку специфичных перечислений.
84-90: Методunknownдля обработки неизвестных значенийМетод
unknownвозвращает значениеUNKNOWNдля перечислений. Это улучшает обработку ошибок.
Line range hint
201-202: МетодcanConvertпроверяет возможность конвертацииМетод
canConvertпроверяет, можно ли конвертировать данный тип. Это корректное поведение.src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/Unmarshaller.java (4)
49-49: Добавлена новая константаUSE_PURPOSES_NODEДобавлена константа для обработки узла
UsePurposes.
132-133: Изменены параметры методаreadItemNodeМетод теперь принимает
nodeNameв качестве параметра. Это улучшает читаемость.
156-161: Добавлена обработка узлаUSE_PURPOSES_NODEМетод
readPropertiesNodeтеперь обрабатывает узелUSE_PURPOSES_NODE. Это улучшает поддержку новых узлов.
178-202: Изменения в методеreadValueМетод
readValueтеперь обрабатывает различные узлы по их именам. Это улучшает поддержку новых узлов и типов данных.
There was a problem hiding this comment.
Actionable comments posted: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (1)
- src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (1 hunks)
Additional comments not posted (5)
src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (5)
25-27: Добавлен новый импорт и аннотация.Импорт класса
UsePurposesи аннотация@Slf4jпозволяют использовать новый функционал и логирование.
41-44: Добавлены новые шаблоны URL и предупреждения.Константы
URL_TEMPLATEиWARN_TEMPLATEиспользуются для генерации предупреждений и URL для создания проблем.
52-59: Изменения в конструкторе для обработки неизвестных значений.Конструктор теперь инициализирует
unknownс использованием нового методаunknown()и добавляет элементы вenumElements, включая дополнительные значения дляUsePurposes.
64-69: Изменения в методеfromStringдля обработки неизвестных значений.Метод
fromStringтеперь регистрирует предупреждение и возвращаетunknown, если исходная строка не найдена.
72-78: Новый методunknownдля поиска неизвестного значения.Метод
unknownитерационно проходит по константам перечисления, чтобы найти значение, помеченное как неизвестное, или выбрасывает исключение, если оно не найдено.
|
| ORDINARY_APPLICATION("OrdinaryApplication"), | ||
| UNKNOWN("unknown") { | ||
| @Override | ||
| public boolean isUnknown() { |
There was a problem hiding this comment.
А чего бы просто name() в дефолт-методе не проверить?



Описание
Связанные задачи
Closes: #458
Чеклист
Общие
gradlew precommit)Дополнительно