Summary
Rename all Java packages from gov.nist.secauto.metaschema.* to dev.metaschema.* to align with the Maven groupId dev.metaschema.java.
Motivation
Having aligned Maven coordinates and Java package names is best practice because it:
- Provides intuitive artifact-to-package mapping
- Improves traceability (easy to find which artifact provides a package)
- Aligns JPMS module names with both groupId and packages
- Reflects the project's evolution to a community-driven model
Current State
| Element |
Value |
| Maven groupId |
dev.metaschema.java |
| Java packages |
gov.nist.secauto.metaschema.* |
| JPMS modules |
gov.nist.secauto.metaschema.* |
Target State
| Element |
Value |
| Maven groupId |
dev.metaschema.java (unchanged) |
| Java packages |
dev.metaschema.* |
| JPMS modules |
dev.metaschema.* |
Impact Assessment
Scope Summary
| Category |
Count |
| Java source files (main) |
1,292 |
| Java test files |
292 |
| Total Java files |
1,584 |
| Package reference occurrences |
~43,000 |
| JPMS module-info.java files |
8 |
| SPI service files (path rename) |
4 |
| pom.xml path references |
6 locations |
| Documentation files |
11 |
JPMS Module Renames
| Current |
New |
gov.nist.secauto.metaschema.core |
dev.metaschema.core |
gov.nist.secauto.metaschema.databind |
dev.metaschema.databind |
gov.nist.secauto.metaschema.schemagen |
dev.metaschema.schemagen |
gov.nist.secauto.metaschema.cli.processor |
dev.metaschema.cli.processor |
gov.nist.secauto.metaschema.cli |
dev.metaschema.cli |
gov.nist.secauto.metaschema.databind.modules |
dev.metaschema.databind.modules |
gov.nist.secauto.metaschema.maven.plugin |
dev.metaschema.maven.plugin |
gov.nist.secauto.metaschema.testing |
dev.metaschema.testing |
Files Requiring Special Attention
SPI Service Files (filename = interface FQCN):
META-INF/services/gov.nist.secauto.metaschema.core.datatype.IDataTypeProvider
META-INF/services/gov.nist.secauto.metaschema.core.metapath.function.IFunctionLibrary
META-INF/services/gov.nist.secauto.metaschema.cli.processor.command.ICommand
Generated Code Paths in pom.xml:
- ANTLR4 parser output:
gov/nist/secauto/metaschema/core/metapath/antlr
- Databind generated classes exclusions
Bootstrap Binding Classes:
databind/.../config/binding/ - regenerate after rename
databind/.../model/metaschema/binding/ - regenerate after rename
metaschema-testing/.../testsuite/ - regenerate after rename
Breaking Change Notice
This is a breaking change requiring a major version bump.
All downstream users will need to:
- Update Maven dependencies (if groupId changes)
- Update all import statements
- Update JPMS
requires directives
- Update SPI service file references
- Update any reflection-based code using FQCNs
Implementation Plan
Phase 1: Preparation
Phase 2: Package Rename
Phase 3: JPMS Updates
Phase 4: Configuration Updates
Phase 5: Generated Code
Phase 6: Documentation
Phase 7: Verification
Tools & Approach
Recommended approach using IDE refactoring or scripted rename:
# Example bulk rename approach (pseudocode)
# 1. Rename directories
find . -type d -path "*/gov/nist/secauto/metaschema*" | rename-script
# 2. Update file contents
find . -name "*.java" -exec sed -i 's/gov\.nist\.secauto\.metaschema/dev.metaschema/g' {} \;
# 3. Rename SPI files
mv META-INF/services/gov.nist.secauto.metaschema.* META-INF/services/dev.metaschema.*
Related Issues
- Part of the project's transition to community governance
- Aligns with Maven groupId change already completed
Labels
- breaking-change
- refactoring
- major-version
Summary
Rename all Java packages from
gov.nist.secauto.metaschema.*todev.metaschema.*to align with the Maven groupIddev.metaschema.java.Motivation
Having aligned Maven coordinates and Java package names is best practice because it:
Current State
dev.metaschema.javagov.nist.secauto.metaschema.*gov.nist.secauto.metaschema.*Target State
dev.metaschema.java(unchanged)dev.metaschema.*dev.metaschema.*Impact Assessment
Scope Summary
JPMS Module Renames
gov.nist.secauto.metaschema.coredev.metaschema.coregov.nist.secauto.metaschema.databinddev.metaschema.databindgov.nist.secauto.metaschema.schemagendev.metaschema.schemagengov.nist.secauto.metaschema.cli.processordev.metaschema.cli.processorgov.nist.secauto.metaschema.clidev.metaschema.cligov.nist.secauto.metaschema.databind.modulesdev.metaschema.databind.modulesgov.nist.secauto.metaschema.maven.plugindev.metaschema.maven.plugingov.nist.secauto.metaschema.testingdev.metaschema.testingFiles Requiring Special Attention
SPI Service Files (filename = interface FQCN):
META-INF/services/gov.nist.secauto.metaschema.core.datatype.IDataTypeProviderMETA-INF/services/gov.nist.secauto.metaschema.core.metapath.function.IFunctionLibraryMETA-INF/services/gov.nist.secauto.metaschema.cli.processor.command.ICommandGenerated Code Paths in pom.xml:
gov/nist/secauto/metaschema/core/metapath/antlrBootstrap Binding Classes:
databind/.../config/binding/- regenerate after renamedatabind/.../model/metaschema/binding/- regenerate after renamemetaschema-testing/.../testsuite/- regenerate after renameBreaking Change Notice
This is a breaking change requiring a major version bump.
All downstream users will need to:
requiresdirectivesImplementation Plan
Phase 1: Preparation
Phase 2: Package Rename
gov/nist/secauto/metaschema→dev/metaschema)Phase 3: JPMS Updates
requiresdirectivesexportsdirectivesopensdirectivesprovidesclausesPhase 4: Configuration Updates
Phase 5: Generated Code
Phase 6: Documentation
Phase 7: Verification
Tools & Approach
Recommended approach using IDE refactoring or scripted rename:
Related Issues
Labels