Skip to content

Оптимизации #467

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jul 11, 2024
Merged

Оптимизации #467

merged 5 commits into from
Jul 11, 2024

Conversation

theshadowco
Copy link
Member

Описание

  • Оптимизация хранения данных элементов форм
  • Оптимизация списка дочерних объектов конфигурации

Связанные задачи

Closes

Чеклист

Общие

  • Ветка PR обновлена из develop
  • Отладочные, закомментированные и прочие, не имеющие смысла участки кода удалены
  • Изменения покрыты тестами
  • Обязательные действия перед коммитом выполнены (запускал команду gradlew precommit)

Дополнительно

Copy link

coderabbitai bot commented Jul 11, 2024

Warning

Rate limit exceeded

@theshadowco has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 0 minutes and 37 seconds before requesting another review.

How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

Commits

Files that changed from the base of the PR and between 8c00217 and c094a3e.

Walkthrough

Внесены изменения в зависимости и классы проекта, обновлена версия bsl-common-library до 0.7.0. Добавлены новые методы в несколько классов для улучшения функциональности управления данными. Внесены оптимизации и рефакторинг для повышения производительности и удобства работы с объектами формы и правами доступа.

Changes

Файл Описание изменений
build.gradle.kts Обновлена версия зависимости bsl-common-library с 0.6.0 до 0.7.0.
.../bsl/mdclasses/CF.java Добавлены методы getCommonModulesByName() и getChildrenByMdoRef(), модифицированы методы findCommonModule() и findChild().
.../mdclasses/Configuration.java, .../mdclasses/ConfigurationExtension.java Добавлены методы getCommonModulesByName() и getChildrenByMdoRef().
.../mdclasses/helpers/Rights.java Изменена логика фильтрации прав доступа к объектам.
.../mdo/CommonForm.java, .../mdo/children/ObjectForm.java Изменено присвоение поля data на EmptyFormData.EMPTY.
.../mdo/storage/EmptyFormData.java Класс EmptyFormData сделан final, добавлено поле EMPTY и методы для возврата пустых коллекций.
.../mdo/storage/EmptyTemplateData.java Класс EmptyTemplateData сделан final, добавлен приватный конструктор.
.../mdo/storage/FormData.java, .../mdo/storage/ManagedFormData.java Рефакторинг методов интерфейса FormData, добавлены ленивые вычисления plainItems в ManagedFormData.
.../mdo/storage/RoleData.java Изменен тип поля name в классе ObjectRight с String на MdoReference.
.../mdo/storage/form/FormDataPath.java Класс преобразован из @Value в Java record, добавлен метод isEmpty().
.../mdo/storage/form/FormElementType.java Введен enum FormElementType для представления различных типов элементов формы.
.../mdo/storage/form/FormHandler.java Изменен метод compareTo для сравнения полей event и name.
.../mdo/storage/form/FormItem.java Изменен тип возвращаемого значения метода getType() на FormElementType, удалена реализация getPlainItems().
.../mdo/storage/form/SimpleFormItem.java Добавлен ленивый расчет plainItems, изменен тип type на FormElementType.
.../reader/common/converter/RoleDataConverter.java Изменен порядок сравнений в условных операторах.
.../reader/common/converter/XdtoPackageDataConverter.java Использование лямбда-синтаксиса, упрощение методов readValueType, readProperty, readTypeDef.
.../reader/common/xstream/ExtendXStream.java Метод setupConverters модифицирован для регистрации конвертера FormElementType.
.../reader/edt/converter/CommonTemplateConverter.java Оптимизация логики преобразования общих шаблонов с использованием ExtendXStream.

Poem

В коде нашем обновление,
Зависимости обновленный след.
Методы, формы — все в движении,
Новый функционал — привет!

Пусть код сияет, как рассвет,
Работает без лишних бед! 🌟🐇


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

github-actions bot commented Jul 11, 2024

Test Results

 56 files  ±0   56 suites  ±0   50s ⏱️ -1s
217 tests ±0  217 ✅ ±0  0 💤 ±0  0 ❌ ±0 
219 runs  ±0  219 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit c094a3e. ± Comparison against base commit d2dd7df.

♻️ This comment has been updated with latest results.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Outside diff range, codebase verification and nitpick comments (3)
src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/ProtectedModuleInfo.java (1)

51-71: Отсутствуют тесты для класса ProtectedModuleInfo.

На основании анализа, классу ProtectedModuleInfo не хватает тестового покрытия, что может привести к невыявленным ошибкам и проблемам в работе с защищенными модулями. Рекомендуется добавить тесты для проверки функциональности этого класса.

  • Отсутствуют тесты, проверяющие ProtectedModuleInfo напрямую или косвенно.
Analysis chain

Инициализация и проверка защищенности модуля выглядят правильными.

Логика конструктора корректно обрабатывает случаи, когда модуль не существует или защищен.

Однако, рекомендуется проверить обработку крайних случаев и наличие соответствующих тестов.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify handling of protected modules in `ProtectedModuleInfo`.

# Test: Search for tests that cover `ProtectedModuleInfo`.
rg --type java 'ProtectedModuleInfo'

Length of output: 843


Script:

#!/bin/bash
# Description: Verify handling of protected modules in `ProtectedModuleInfo`.

# Test: Search for test files that cover `ProtectedModuleInfo`.
rg --type java 'ProtectedModuleInfo' --glob '*Test.java'

Length of output: 56


Script:

#!/bin/bash
# Description: Verify handling of protected modules in `ProtectedModuleInfo`.

# Test: Search for test methods that might indirectly test `ProtectedModuleInfo`.
rg --type java 'ProtectedModuleInfo' --glob '*Test.java' -A 10

Length of output: 62

src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/CommonTemplateConverter.java (1)

39-52: Отсутствуют тесты для CommonTemplateConverter.

Изменения в методе unmarshal требуют тестирования для проверки обработки крайних случаев и предотвращения возможных ошибок. Рекомендуется добавить соответствующие тесты для CommonTemplateConverter.

  • Отсутствуют тесты, покрывающие CommonTemplateConverter.
Analysis chain

Изменения в методе unmarshal выглядят правильными.

Использование ExtendXStream для чтения данных и установки TemplateData улучшает функциональность.

Однако, рекомендуется проверить обработку крайних случаев и наличие соответствующих тестов.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify handling of `unmarshal` method in `CommonTemplateConverter`.

# Test: Search for tests that cover `CommonTemplateConverter`.
rg --type java 'CommonTemplateConverter'

Length of output: 199


Script:

#!/bin/bash
# Description: Verify handling of `unmarshal` method in `CommonTemplateConverter`.

# Test: Search for tests that cover `CommonTemplateConverter` in test directories.
rg --type java 'CommonTemplateConverter' --glob 'src/test/**'

Length of output: 61


Script:

#!/bin/bash
# Description: Verify handling of `unmarshal` method in `CommonTemplateConverter`.

# Test: Search for tests that cover `CommonTemplateConverter` in the entire repository.
rg --type java 'CommonTemplateConverter'

Length of output: 199

src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/Unmarshaller.java (1)

Line range hint 73-107: Метод readNode.

Метод readNode корректно обрабатывает различные типы узлов и устанавливает значения в контексте. Однако, можно улучшить читаемость кода, добавив комментарии.

// Проверка, если узел соответствует языковому узлу
if (LANGUAGE_NODE.equals(name)) {
  fieldClass = Language.class;
  name = LANGUAGE_METHOD_NAME;
} else {
  fieldClass = String.class;
}

Этот комментарий улучшит понимание кода.

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between d2dd7df and 8c00217.

Files ignored due to path filters (104)
  • src/test/resources/fixtures/external/ТестоваяВнешняяОбработка.json is excluded by !**/*.json
  • src/test/resources/fixtures/external/ТестоваяВнешняяОбработка_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/external/ТестовыйВнешнийОтчет.json is excluded by !**/*.json
  • src/test/resources/fixtures/external/ТестовыйВнешнийОтчет_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/AccountingRegisters.РегистрБухгалтерии1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/AccumulationRegisters.РегистрНакопления1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/BusinessProcesses.БизнесПроцесс1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/BusinessProcesses.БизнесПроцесс1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CalculationRegisters.РегистрРасчета1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CalculationRegisters.РегистрРасчета1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Catalogs.Справочник1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Catalogs.Справочник1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ChartsOfAccounts.ПланСчетов1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ChartsOfAccounts.ПланСчетов1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ChartsOfCalculationTypes.ПланВидовРасчета1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ChartsOfCharacteristicTypes.ПланВидовХарактеристик1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ChartsOfCharacteristicTypes.ПланВидовХарактеристик1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommandGroups.ГруппаКоманд1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonAttributes.ОбщийРеквизит1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonCommands.ОбщаяКоманда1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonCommands.ОбщаяКоманда1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonForms.Форма.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonForms.Форма_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonPictures.ОбщаяКартинка1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Configuration.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Configuration_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Constants.Константа1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Constants.Константа1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DataProcessors.Обработка1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DataProcessors.Обработка1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DefinedTypes.ОпределяемыйТип1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DocumentJournals.ЖурналДокументов1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DocumentJournals.ЖурналДокументов1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DocumentNumerators.НумераторДокументов1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Documents.Документ1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Documents.Документ1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Enums.Перечисление1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Enums.Перечисление1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/EventSubscriptions.ПодпискаНаСобытие1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ExchangePlans.ПланОбмена1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ExchangePlans.ПланОбмена1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ExternalDataSources.ТекущаяСУБД.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ExternalDataSources.ТекущаяСУБД_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/FilterCriteria.КритерийОтбора1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/FilterCriteria.КритерийОтбора1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/FunctionalOptions.ФункциональнаяОпция1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/HTTPServices.HTTPСервис1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/HTTPServices.HTTPСервис1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/InformationRegisters.РегистрСведений1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/InformationRegisters.РегистрСведений1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Interfaces.Интерфейс1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Reports.Отчет1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Reports.Отчет1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Roles.Роль1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ScheduledJobs.РегламентноеЗадание1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Sequences.Последовательность1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Sequences.Последовательность1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/SessionParameters.ПараметрСеанса1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/StyleItems.ЭлементСтиля1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Subsystems.ПерваяПодсистема.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Tasks.Задача1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/WebServices.WebСервис1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/WebServices.WebСервис1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/XDTOPackages.ПакетXDTO1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_18/Bots.Бот1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_18/Bots.Бот1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_18/Configuration.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_18/Configuration_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_18/IntegrationServices.СервисИнтеграции1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_18/IntegrationServices.СервисИнтеграции1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_24/Configuration_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_ext/Configuration.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_ext/Configuration_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_unknown/Configuration_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/BusinessProcesses.Задание.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/BusinessProcesses.Задание_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Catalogs.Заметки.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Catalogs.Заметки_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/ChartsOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/ChartsOfCharacteristicTypes.ДополнительныеРеквизитыИСведения_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonForms.Вопрос.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonForms.Вопрос_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Constants.ЗаголовокСистемы.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/DataProcessors.ЗагрузкаКурсовВалют.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/DataProcessors.ЗагрузкаКурсовВалют_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/DocumentJournals.Взаимодействия.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/DocumentJournals.Взаимодействия_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Documents.Анкета.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Documents.Анкета_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Enums.СтатусыОбработчиковОбновления.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Enums.СтатусыОбработчиковОбновления_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/ExchangePlans.ОбновлениеИнформационнойБазы.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/ExchangePlans.ОбновлениеИнформационнойБазы_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/FilterCriteria.ФайлыВТоме.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/FilterCriteria.ФайлыВТоме_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/InformationRegisters.ЭлектронныеПодписи.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/InformationRegisters.ЭлектронныеПодписи_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Reports.АнализВерсийОбъектов.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Reports.АнализВерсийОбъектов_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Roles.БазовыеПраваБСП.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/SettingsStorages.ХранилищеВариантовОтчетов.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/SettingsStorages.ХранилищеВариантовОтчетов_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Tasks.ЗадачаИсполнителя.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Tasks.ЗадачаИсполнителя_edt.json is excluded by !**/*.json
Files selected for processing (48)
  • build.gradle.kts (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/CF.java (3 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/Configuration.java (3 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/ConfigurationExtension.java (3 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/helpers/Rights.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/CommonForm.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectForm.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/EmptyFormData.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/EmptyTemplateData.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/FormData.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/ManagedFormData.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/RoleData.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormDataPath.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElementType.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormHandler.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormItem.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/SimpleFormItem.java (3 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataSetType.java (3 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/Handler.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/MultiLanguageString.java (3 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/utils/LazyLoader.java (5 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/FakeReader.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/TransformationUtils.java (4 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/context/AbstractReaderContext.java (3 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/context/FormElementReaderContext.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/context/MDReaderContext.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/DataCompositionSchemaConverter.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/DataSetConverter.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/ProtectedModuleInfo.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/RoleDataConverter.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/XdtoPackageDataConverter.java (4 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/DesignerReader.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormElementConverter.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/MdoReferenceConverter.java (3 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/Unmarshaller.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/EDTReader.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/CommonTemplateConverter.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ExternalDataSourceTableConverter.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormDataPathConverter.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormHandlerConverter.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormItemConverter.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ManagedFormDataConverter.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ObjectTemplateConverter.java (3 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/Unmarshaller.java (3 hunks)
  • src/test/java/com/github/_1c_syntax/bsl/mdo/DocumentTest.java (2 hunks)
  • src/test/java/com/github/_1c_syntax/bsl/mdo/RoleTest.java (2 hunks)
  • src/test/java/com/github/_1c_syntax/bsl/test_utils/MDTestUtils.java (2 hunks)
Files skipped from review due to trivial changes (10)
  • build.gradle.kts
  • src/main/java/com/github/_1c_syntax/bsl/mdo/CommonForm.java
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectForm.java
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/Handler.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/context/AbstractReaderContext.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/DataCompositionSchemaConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/Unmarshaller.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/EDTReader.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormHandlerConverter.java
  • src/test/java/com/github/_1c_syntax/bsl/mdo/DocumentTest.java
Additional comments not posted (99)
src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormDataPath.java (2)

34-34: Отличная реализация константы.

Добавление статического финального поля EMPTY для представления пустого FormDataPath соответствует лучшим практикам.


39-41: Метод isEmpty() добавлен правильно.

Новый метод isEmpty() корректно реализован и улучшает удобство использования класса FormDataPath.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/EmptyTemplateData.java (2)

27-31: Корректное использование final и приватного конструктора.

Изменение класса на final и добавление приватного конструктора соответствуют лучшим практикам для создания синглтонов.


Line range hint 32-38:
Оптимизация метода getEmpty().

Метод getEmpty() теперь возвращает экземпляр EMPTY, что соответствует паттерну синглтон и улучшает производительность.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormItem.java (1)

35-35: Улучшение типизации и удаление реализации по умолчанию.

Изменение возвращаемого типа метода getType() на FormElementType улучшает безопасность типов. Удаление реализации по умолчанию для getPlainItems() требует, чтобы подклассы предоставляли собственную реализацию.

Also applies to: 65-65

src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormDataPathConverter.java (1)

37-41: Корректное использование FormDataPath в методе unmarshal.

Метод unmarshal теперь правильно использует FormDataPath для создания нового экземпляра с значением из ридера.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/FormData.java (6)

38-40: Метод isEmpty выглядит правильно.

Метод эффективно проверяет, является ли текущий экземпляр синглтоном EmptyFormData.EMPTY.


45-45: Метод getTitle выглядит правильно.

Метод декларации для получения заголовка формы.


50-50: Метод getHandlers выглядит правильно.

Метод декларации для получения обработчиков событий формы.


55-55: Метод getItems выглядит правильно.

Метод декларации для получения визуальных элементов формы первого уровня.


60-60: Метод getPlainItems выглядит правильно.

Метод декларации для получения всех визуальных элементов формы.


65-65: Метод getAttributes выглядит правильно.

Метод декларации для получения реквизитов формы.

src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ManagedFormDataConverter.java (2)

Line range hint 37-42:
Метод unmarshal выглядит правильно.

Метод корректно использует FormElementReaderContext и Unmarshaller для обработки данных.


44-47: Метод canConvert выглядит правильно.

Метод корректно проверяет тип на соответствие ManagedFormData и FormAttribute.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/SimpleFormItem.java (4)

41-41: Поле type выглядит правильно.

Поле корректно инициализируется значением по умолчанию FormElementType.UNKNOWN.


53-53: Поле plainItems выглядит правильно.

Поле корректно инициализируется с использованием ленивого загрузчика.


56-58: Метод getPlainItems выглядит правильно.

Метод корректно использует механизм ленивой загрузки.


60-62: Метод computePlainItems выглядит правильно.

Метод корректно использует LazyLoader для вычисления плоских элементов.

src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataSetType.java (3)

45-46: Поле KEYS выглядит правильно.

Поле корректно инициализируется с использованием метода computeKeys.


56-58: Метод fromString выглядит правильно.

Метод корректно использует карту KEYS для выполнения преобразования.


60-65: Метод computeKeys выглядит правильно.

Метод корректно перебирает значения перечисления и заполняет карту.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/ManagedFormData.java (4)

28-29: Добавление необходимых импортов.

Добавлены импорты для LazyLoader и Lazy. Это необходимо для реализации ленивой загрузки plain items.


52-52: Инициализация Lazy переменной.

Инициализация переменной plainItems с использованием ленивой загрузки. Это улучшает производительность, загружая данные только при необходимости.


55-57: Метод для получения plain items.

Метод getPlainItems использует ленивую загрузку для получения plain items. Это улучшает производительность, загружая данные только при необходимости.


59-60: Метод для вычисления plain items.

Метод computePlainItems использует LazyLoader для вычисления plain items. Это улучшает производительность и упрощает код.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/EmptyFormData.java (8)

24-27: Добавление необходимых импортов.

Добавлены импорты для FormAttribute, FormHandler, FormItem и MultiLanguageString. Это необходимо для реализации методов интерфейса FormData.


40-40: Добавление константы EMPTY.

Константа EMPTY заменяет метод getEmpty(). Это улучшает производительность и упрощает доступ к пустому содержимому формы.


42-43: Приватный конструктор.

Приватный конструктор предотвращает создание экземпляров класса извне. Это улучшает инкапсуляцию и безопасность.


45-48: Метод для получения заголовка.

Метод getTitle возвращает пустой MultiLanguageString. Это соответствует ожиданиям для пустого содержимого формы.


50-53: Метод для получения обработчиков формы.

Метод getHandlers возвращает пустой список. Это соответствует ожиданиям для пустого содержимого формы.


55-58: Метод для получения элементов формы.

Метод getItems возвращает пустой список. Это соответствует ожиданиям для пустого содержимого формы.


60-62: Метод для получения plain items.

Метод getPlainItems возвращает пустой список. Это соответствует ожиданиям для пустого содержимого формы.


66-67: Метод для получения атрибутов формы.

Метод getAttributes возвращает пустой список. Это соответствует ожиданиям для пустого содержимого формы.

src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormItemConverter.java (4)

24-26: Добавление необходимых импортов.

Добавлены импорты для FormElementType, FormItem, FormElementReaderContext, и ReadConverter. Это необходимо для реализации конвертора данных формы.


34-35: Аннотация EDTConverter.

Аннотация @EDTConverter указывает, что данный класс является конвертором данных в формате ЕДТ. Это улучшает читаемость и поддержку кода.


37-45: Метод unmarshal для конвертации данных.

Метод unmarshal выполняет чтение данных из HierarchicalStreamReader и преобразует их в объект FormElementReaderContext. Если тип элемента формы не задан, он устанавливается на основе атрибута type. Это улучшает поддержку различных типов элементов формы.


48-51: Метод canConvert для проверки типа.

Метод canConvert проверяет, может ли данный конвертор обрабатывать указанный тип. Это улучшает гибкость и расширяемость конвертора.

src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ObjectTemplateConverter.java (5)

Line range hint 24-28:
Добавление необходимых импортов.

Добавлены импорты для ObjectTemplate, EmptyTemplateData, TemplateData, AbstractReadConverter, ExtendXStream, MDOType, UnmarshallingContext, и HierarchicalStreamReader. Это необходимо для реализации конвертора шаблонов объектов.


36-36: Аннотация EDTConverter.

Аннотация @EDTConverter указывает, что данный класс является конвертором данных в формате ЕДТ. Это улучшает читаемость и поддержку кода.


45-52: Метод unmarshal для конвертации данных.

Метод unmarshal выполняет чтение данных из HierarchicalStreamReader и преобразует их в объект TemplateData. Если данные являются экземпляром TemplateData, они устанавливаются в контексте чтения. Это улучшает поддержку различных типов данных шаблонов.


57-57: Метод canConvert для проверки типа.

Метод canConvert проверяет, может ли данный конвертор обрабатывать указанный тип. Это улучшает гибкость и расширяемость конвертора.


60-61: Метод dataPath для вычисления пути данных.

Метод dataPath вычисляет путь к данным шаблона на основе текущего пути и имени. Это улучшает поддержку различных путей данных.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormHandler.java (1)

71-75: Изменение логики сравнения в методе compareTo выглядит правильным.

Теперь метод сначала сравнивает event, а затем name, что улучшает порядок сортировки.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/RoleData.java (1)

77-77: Изменение типа поля name в ObjectRight на MdoReference выглядит правильным.

Это улучшает типизацию и функциональность.

Однако, рекомендуется проверить все места использования ObjectRight для соответствия новому типу.

src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/CommonTemplateConverter.java (1)

59-61: Метод dataPath выглядит правильным.

Метод корректно вычисляет путь для Template.dcs.

src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ExternalDataSourceTableConverter.java (3)

33-33: Добавлен импорт для Pattern.

Импорт Pattern необходим для использования регулярных выражений в коде. Изменение выглядит корректным.


42-42: Добавлен паттерн для разбивки строк.

Паттерн SPLITTER_PATTERN используется для разбивки строки по точке. Это улучшает читаемость и повторное использование.


48-48: Использование паттерна для разбивки строки в unmarshal методе.

Использование SPLITTER_PATTERN для разбивки значения и получение childName улучшает читаемость и поддержку кода.

src/test/java/com/github/_1c_syntax/bsl/mdo/RoleTest.java (3)

60-60: Добавлена проверка имени и прав для конфигурации.

Проверяется, что имя конфигурации и количество прав соответствуют ожидаемым значениям. Изменение выглядит корректным.


64-64: Добавлена проверка имени и прав для документа.

Проверяется, что имя документа и количество прав соответствуют ожидаемым значениям. Изменение выглядит корректным.


68-68: Добавлена проверка имени и прав для справочника.

Проверяется, что имя справочника и количество прав соответствуют ожидаемым значениям. Изменение выглядит корректным.

src/main/java/com/github/_1c_syntax/bsl/reader/common/context/FormElementReaderContext.java (5)

26-26: Добавлен импорт для FormElementType.

Импорт FormElementType необходим для использования этого типа в классе. Изменение выглядит корректным.


32-34: Добавлены аннотации Lombok для полей.

Аннотации @Getter и @Setter автоматически генерируют методы доступа для поля elementType, что улучшает читаемость и поддержку кода.


56-59: Добавлено поле elementType с аннотациями @Setter и @Getter.

Поле elementType используется для хранения типа элемента формы. Изменение улучшает функциональность класса.


63-63: Использование карты CLASSES для определения реального класса.

Использование карты CLASSES для определения реального класса улучшает читаемость и поддержку кода.


69-71: Улучшение метода fieldType для определения типа поля.

Метод fieldType теперь проверяет наличие поля в карте CLASSES и использует суперметод, если поле не найдено. Это улучшает гибкость и поддержку кода.

src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormElementConverter.java (2)

25-25: Добавлен импорт для FormElementType.

Импорт FormElementType необходим для использования этого типа в классе. Изменение выглядит корректным.


57-57: Установка типа элемента в readerContext.

Установка значения типа элемента с использованием FormElementType.fromString улучшает читаемость и поддержку кода.

src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/MdoReferenceConverter.java (1)

Line range hint 44-49:
Проверьте логику обработки значения.

В методе unmarshal значение value устанавливается в пустую строку, если дочерние элементы отсутствуют. Возможно, стоит добавить логирование для отладки или дополнительных проверок.

src/main/java/com/github/_1c_syntax/bsl/reader/FakeReader.java (1)

93-93: Изменение инициализации на EmptyFormData.EMPTY.

Изменение инициализации на EmptyFormData.EMPTY вместо использования метода getEmpty() улучшает производительность и читабельность.

src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/DataSetConverter.java (1)

49-49: Изменение типа данных.

Изменение типа данных в методе unmarshal для dataSet.type улучшает читабельность и упрощает поддержку кода.

src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/RoleDataConverter.java (2)

Line range hint 48-55:
Использование метода equals.

Изменение вызова метода equals на проверку константы повышает читаемость и снижает вероятность ошибок.


68-71: Использование метода equals.

Изменение вызова метода equals на проверку константы повышает читаемость и снижает вероятность ошибок.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElementType.java (5)

1-21: Лицензионное уведомление и информация о файле.

Этот сегмент содержит лицензионное уведомление и информацию о файле. Здесь нет изменений кода, требующих обзора.


24-37: Импорт и объявление класса.

Импорты и объявление класса выглядят корректно. Использование lombok для автоматического создания методов-геттеров и других функций улучшает читаемость кода.


38-83: Объявление констант перечисления.

Константы перечисления объявлены корректно. Использование конструктора и метода isUnknown для типа UNKNOWN выглядит логичным.


85-85: Инициализация статической карты KEYS.

Инициализация статической карты KEYS с вызовом метода computeKeys выглядит корректно.


105-111: Метод computeKeys.

Метод computeKeys корректно создает неизменяемую карту из значений перечисления. Использование Collections.unmodifiableMap повышает безопасность кода.

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

Line range hint 1-90: Лицензионное уведомление и информация о файле. Импорт и объявление класса.

Этот сегмент содержит лицензионное уведомление, информацию о файле, импорты и объявление класса. Здесь нет изменений кода, требующих обзора.


141-150: Метод setValueChildren.

Метод setValueChildren корректно обрабатывает дочерние контексты и устанавливает значения для них. Использование потоков и параллельных стримов повышает производительность.

src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/Unmarshaller.java (3)

Line range hint 1-72: Лицензионное уведомление и информация о файле. Импорт и объявление класса.

Этот сегмент содержит лицензионное уведомление, информацию о файле, импорты и объявление класса. Здесь нет изменений кода, требующих обзора.


115-118: Метод transformMultiLanguageString.

Метод transformMultiLanguageString корректно объединяет значения многоязычных строк. Код выглядит корректно и не требует изменений.


126-129: Метод saveExtra.

Метод saveExtra корректно сохраняет дополнительные значения в контексте. Код выглядит корректно и не требует изменений.

src/main/java/com/github/_1c_syntax/bsl/mdclasses/CF.java (5)

Line range hint 1-93: Лицензионное уведомление и информация о файле. Импорт и объявление интерфейса.

Этот сегмент содержит лицензионное уведомление, информацию о файле, импорты и объявление интерфейса. Здесь нет изменений кода, требующих обзора.


94-98: Метод getCommonModulesByName.

Метод getCommonModulesByName добавлен корректно. Он возвращает карту общих модулей по имени.


100-103: Метод getChildrenByMdoRef.

Метод getChildrenByMdoRef добавлен корректно. Он возвращает карту дочерних объектов по ссылке.


174-176: Метод findChild по ссылке.

Метод findChild модифицирован корректно. Он теперь использует метод getChildrenByMdoRef для поиска дочернего объекта по ссылке.


179-181: Метод findCommonModule по имени.

Метод findCommonModule модифицирован корректно. Он теперь использует метод getCommonModulesByName для поиска общего модуля по имени.

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

89-92: Проверьте корректность использования computeFieldType.

Метод fieldType правильно использует ConcurrentSkipListMap для кэширования типов и вызывает computeFieldType, если тип не закэширован. Убедитесь, что computeFieldType реализован корректно.


136-141: Проверьте корректность фильтрации методов.

Метод getMethod правильно использует ConcurrentSkipListMap для кэширования методов и фильтрует методы по имени. Убедитесь, что логика фильтрации методов корректна.


143-157: Проверьте корректность обработки типов в computeFieldType.

Метод computeFieldType корректно обрабатывает различные сценарии типов, включая параметризованные и wildcard типы. Убедитесь, что метод возвращает правильный тип.

src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/XdtoPackageDataConverter.java (3)

67-73: Проверьте корректность использования switch с лямбда-синтаксисом.

Метод unmarshal корректно использует switch с лямбда-синтаксисом для обработки различных имен узлов. Убедитесь, что все случаи правильно обработаны и паттерн builder используется эффективно.


97-99: Проверьте корректность чтения атрибутов и узлов в readValueType.

Метод readValueType корректно создает объект ValueType из данных XDTO. Убедитесь, что метод правильно читает атрибуты и обрабатывает узлы перечислений.


114-116: Проверьте корректность чтения атрибутов и определения типов в readProperty.

Метод readProperty корректно создает объект Property из данных XDTO. Убедитесь, что метод правильно читает атрибуты и обрабатывает определения типов.

src/main/java/com/github/_1c_syntax/bsl/mdo/support/MultiLanguageString.java (2)

48-57: Проверьте корректность реализации константы EMPTY и конструктора.

Константа EMPTY и конструктор правильно инициализируют содержимое пустым набором.


190-192: Проверьте корректность реализации класса Entry.

Класс Entry объявлен как final и правильно реализует методы для создания и сравнения записей.

src/main/java/com/github/_1c_syntax/bsl/mdclasses/helpers/Rights.java (2)

147-147: Проверьте корректность фильтрации прав в методе rightAccess.

Метод rightAccess правильно фильтрует и проверяет права. Убедитесь, что логика фильтрации корректна.


161-161: Проверьте корректность фильтрации ролей в методе rolesAccess.

Метод rolesAccess правильно фильтрует и собирает роли. Убедитесь, что логика фильтрации корректна.

src/test/java/com/github/_1c_syntax/bsl/test_utils/MDTestUtils.java (1)

110-112: Проверьте покрытие тестами новых полей.

Изменения одобрены. Добавлены новые строки для исключения полей plainItems, commonModulesByName и childrenByMdoRef при сериализации в JSON. Убедитесь, что новые поля покрыты тестами.

src/main/java/com/github/_1c_syntax/bsl/reader/designer/DesignerReader.java (1)

151-151: Проверьте покрытие тестами нового случая.

Изменения одобрены. Добавлено новое условие для возврата EmptyFormData.EMPTY, если файл данных формы не существует. Убедитесь, что этот случай покрыт тестами.

src/main/java/com/github/_1c_syntax/bsl/mdclasses/ConfigurationExtension.java (2)

251-252: Изменения одобрены: Добавлены ленивые поля.

Новые ленивые поля commonModulesByName и childrenByMdoRef добавлены для улучшения производительности.


295-303: Изменения одобрены: Добавлены новые методы.

Новые методы getCommonModulesByName и getChildrenByMdoRef добавлены для доступа к ленивым полям.

src/main/java/com/github/_1c_syntax/bsl/mdo/utils/LazyLoader.java (3)

210-211: Изменения одобрены: Добавлен метод computeModulesByType.

Метод создает соответствие URI модуля к его типу, используя поток для сбора данных в немодифицируемую карту.


242-245: Изменения одобрены: Добавлен метод computeChildrenByMdoRef.

Метод создает соответствие ссылки довернего объекта к нему самому, используя поток для сбора данных в немодифицируемую карту.


256-258: Изменения одобрены: Добавлен метод computeModulesByURI.

Метод создает соответствие URI модуля к самому модулю, используя поток для сбора данных в немодифицируемую карту.

src/main/java/com/github/_1c_syntax/bsl/mdclasses/Configuration.java (3)

260-260: Одобрено: Правильное использование ленивой загрузки

Использование ленивой загрузки для commonModulesByName корректно.


261-261: Одобрено: Правильное использование ленивой загрузки

Использование ленивой загрузки для childrenByMdoRef корректно.


350-359: Одобрено: Корректная реализация методов доступа

Методы getCommonModulesByName и getChildrenByMdoRef корректно используют ленивую загрузку для эффективного получения данных.

src/main/java/com/github/_1c_syntax/bsl/reader/common/xstream/ExtendXStream.java (1)

269-269: Одобрено: Регистрация конвертера для FormElementType

Регистрация конвертера для FormElementType в методе setupConverters обеспечивает правильную обработку перечисления при сериализации и десериализации.

Copy link

@theshadowco theshadowco merged commit d77a503 into develop Jul 11, 2024
15 checks passed
@theshadowco theshadowco deleted the feature/optimyze080724 branch July 11, 2024 07:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant