GEM: EntityViewのView名に予約文字が含まれないようにする#1763
Conversation
…9-validation-defname4
…9-validation-defname4
…9-validation-defname4
…9-validation-defname4
There was a problem hiding this comment.
Pull Request Overview
This PR implements metadata definition name validation to prevent reserved characters from being used in entity view names and other metadata definitions. The change addresses issue #1699 by adding comprehensive definition name checking across multiple layers.
- Adds definition name validation infrastructure with configurable patterns and error messages
- Implements check status validation during metadata import to identify inconsistencies
- Adds view name validation specifically for EntityView definitions with proper error messages
Reviewed Changes
Copilot reviewed 55 out of 55 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| iplass-core/src/main/java/org/iplass/mtp/impl/definition/DefinitionNameChecker.java | Core definition name validation logic with regex patterns |
| iplass-core/src/main/java/org/iplass/mtp/impl/entity/EntityDefinitionNameChecker.java | Entity-specific definition name checker implementation |
| iplass-gem/src/main/java/org/iplass/mtp/impl/view/generic/EntityViewRuntime.java | EntityView runtime validation for view names |
| iplass-tools/src/main/java/org/iplass/mtp/impl/tools/metaport/MetaDataPortingServiceImpl.java | Added check status validation after metadata import |
| Multiple service files | Integration of definition name checkers across various metadata services |
| * @param <M> メタデータの型 | ||
| * @param metaType メタデータタイプ | ||
| * @param メタデータ定義名 | ||
| * @return メタデータ定義名チェック結果 |
There was a problem hiding this comment.
The parameter name is missing in the JavaDoc comment. It should be '@param defName メタデータ定義名'.
| * @return メタデータ定義名チェック結果 | |
| * @param <M> メタデータの型 | |
| * @param metaType メタデータタイプ | |
| * @param defName メタデータ定義名 | |
| * @return メタデータ定義名チェック結果 |
| import java.util.List; | ||
| import java.util.Map; | ||
|
|
||
| import javax.xml.parsers.ParserConfigurationException; |
There was a problem hiding this comment.
[nitpick] The javax.xml imports have been moved after the jakarta.xml imports, breaking the typical import ordering convention where javax imports should come before custom package imports.
There was a problem hiding this comment.
プロジェクトで利用してるフォーマッターの順序になっているのでそのままとさせてください。
|
|
||
| // View名の正規表現(英数字、ハイフン、アンダーバー、ピリオドのみ可で先頭にハイフン、ピリオドは除き、末尾にピリオドは除く) | ||
| private static final Pattern VIEW_NAME_PATTERN = Pattern.compile("^[0-9a-zA-Z_][0-9a-zA-Z_-]*(\\.[0-9a-zA-Z_-]+)*$"); | ||
|
|
There was a problem hiding this comment.
The regex pattern is hardcoded and duplicates validation logic. Consider using the EntityDefinitionNameChecker or creating a shared constant to maintain consistency with other definition name patterns.
| // View名の正規表現は EntityDefinitionNameChecker で一元管理 |
There was a problem hiding this comment.
修正しました。
重複ロジックを避ける修正としてViewNameCheckerを作成。
|
|
||
| @Override | ||
| protected DefinitionNameChecker createDefinitionNameChecker() { | ||
| return new DefinitionNameChecker(NAME_CHECK_PATTERN, NAME_CHECK_MESSAGE) { |
There was a problem hiding this comment.
Empty anonymous class with no overridden methods. This can be simplified to 'return new DefinitionNameChecker(NAME_CHECK_PATTERN, NAME_CHECK_MESSAGE);'
対応内容
fixes #1699
動作確認・スクリーンショット(任意)
レビュー観点・補足情報(任意)