refactor(converters): group Java modules and share generated Ossie models#235
refactor(converters): group Java modules and share generated Ossie models#235wForget wants to merge 3 commits into
Conversation
| { | ||
| "$schema": "https://json-schema.org/draft/2020-12/schema", | ||
| "$id": "https://github.com/apache/ossie/core-spec/osi-schema.json", | ||
| "javaName": "OsiModel", |
There was a problem hiding this comment.
javaName explicitly sets the jsonschema2pojo-maven-plugin generated root class name to OsiModel instead of deriving OsiSchema from the schema file name.
There was a problem hiding this comment.
Pull request overview
This PR refactors the Java converter ecosystem by introducing a converters/java Maven reactor with a shared schema-generated Java model (ossie-common) and updating the Polaris and Salesforce converters to consume those generated Ossie POJOs (removing Polaris’ hand-written model).
Changes:
- Added
converters/javaMaven reactor with modules:ossie-common,polaris,salesforce, plus a new Java CI workflow. - Introduced schema-driven Java model generation from
core-spec/osi-schema.json(shared asossie-common) and migrated Polaris/Salesforce to useorg.apache.ossie.model.*. - Reworked Salesforce converter into a configurable “dynamic pipeline” architecture with mapping/handlers, updated docs/resources/tests, and produced shaded
*-all.jarartifacts.
Reviewed changes
Copilot reviewed 25 out of 60 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| ROADMAP.md | Updates converter paths to point at the new converters/java/... layout. |
| core-spec/osi-schema.json | Adds javaName to support schema-to-POJO generation. |
| converters/README.md | Documents the new Java reactor and shared ossie-common model module. |
| converters/polaris/src/main/java/org/apache/ossie/converter/polaris/OsiYamlGenerator.java | Removes old Polaris YAML generator tied to the hand-written model. |
| converters/polaris/src/main/java/org/apache/ossie/converter/polaris/OsiModelParser.java | Removes old Polaris YAML parser tied to the hand-written model. |
| converters/polaris/src/main/java/org/apache/ossie/converter/polaris/model/OsiModel.java | Removes Polaris’ hand-written OsiModel in favor of generated POJOs. |
| converters/java/salesforce/src/test/resources/examples/salesforceToOsi.json | Adds Salesforce JSON example used by integration tests. |
| converters/java/salesforce/src/test/resources/examples/osiToSalesforce.yaml | Adds Ossie YAML example used by integration tests. |
| converters/java/salesforce/src/test/java/org/apache/ossie/SalesforceToOsiConverterTest.java | Adds end-to-end tests for Salesforce → Ossie conversion and pipeline config. |
| converters/java/salesforce/src/test/java/org/apache/ossie/OsiToSalesforceConverterTest.java | Adds end-to-end tests for Ossie → Salesforce conversion and pipeline config. |
| converters/java/salesforce/src/test/java/org/apache/ossie/converter/OsiModelBindingTest.java | Tests binding between map-based pipeline structures and generated Ossie model classes. |
| converters/java/salesforce/src/main/resources/osi-salesforce-converter-config.yaml | Adds pipeline step ordering and direction-specific config. |
| converters/java/salesforce/src/main/resources/mappings.yaml | Adds base property path mappings for the generic mapping engine. |
| converters/java/salesforce/src/main/java/org/apache/ossie/validator/SchemaValidator.java | Adds JSON Schema validation (networknt) for converter inputs. |
| converters/java/salesforce/src/main/java/org/apache/ossie/util/PathUtils.java | Adds nested-path get/set and deep-copy helpers for map-based transformations. |
| converters/java/salesforce/src/main/java/org/apache/ossie/util/MappingUtils.java | Adds mapping utilities (prefix filtering, handled property extraction). |
| converters/java/salesforce/src/main/java/org/apache/ossie/util/DataStructureUtils.java | Adds safer map/list accessors and helpers for heterogeneous structures. |
| converters/java/salesforce/src/main/java/org/apache/ossie/mapper/PropertyMapper.java | Defines mapping provider interface for bidirectional property mappings. |
| converters/java/salesforce/src/main/java/org/apache/ossie/mapper/FileBasedPropertyMapper.java | Loads mappings.yaml and constructs reverse mappings. |
| converters/java/salesforce/src/main/java/org/apache/ossie/exception/ValidationException.java | Adds runtime exception type for schema validation failures. |
| converters/java/salesforce/src/main/java/org/apache/ossie/exception/InvalidInputException.java | Adds runtime exception type for invalid input cases. |
| converters/java/salesforce/src/main/java/org/apache/ossie/exception/ConversionException.java | Adds runtime exception type for conversion/pipeline failures. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/SemanticModelMappingHandler.java | Maps top-level model properties and integrates extension handling/defaults. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/RelationshipMappingHandler.java | Implements relationship conversion logic, filtering, and SF criteria mapping. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/pipeline/PipelineStep.java | Defines pipeline step interface for handler execution. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/pipeline/PipelineConfigLoader.java | Loads pipeline configuration YAML into runtime config. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/pipeline/PipelineConfig.java | Holds pipeline + per-direction configuration models. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/pipeline/HandlerFactory.java | Creates handlers from config via a registry-style factory. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/pipeline/DirectionConfig.java | Stores format/schema/name-extraction settings per direction. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/OsiModelBinding.java | Bridges map-based pipeline input/output with generated Ossie POJOs. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/MetricMappingHandler.java | Handles SF→Ossie metric wrapping; omits Ossie→SF metric mapping. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/GenericMappingEngine.java | Applies straightforward path mappings (scalar + array mappings). |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/DatasetMappingHandler.java | Maps datasets↔semanticDataObjects, applies defaults, stores extensions. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/CustomExtensionHandler.java | Stores/restores vendor properties via custom_extensions round-tripping. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/ConverterImpl.java | Updates Salesforce converter implementation to use generated Ossie model at boundaries. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/ConverterFactory.java | Adds factory entry point for creating the converter implementation. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/ConverterConstants.java | Centralizes constants for keys/structures/dialects/defaults. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/Converter.java | Defines converter API (file + string conversion). |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/ConversionDirection.java | Defines direction enum and config key mapping. |
| converters/java/salesforce/src/main/java/org/apache/ossie/converter/AbstractConverter.java | Adds shared YAML/JSON parsing, output writing, and mapper loading. |
| converters/java/salesforce/src/main/java/org/apache/ossie/app/OsiSalesforceConverter.java | Adds CLI entry point for the Salesforce converter. |
| converters/java/salesforce/README.md | Updates build/run instructions for the Java reactor and shaded jar outputs. |
| converters/java/salesforce/pom.xml | Switches to reactor parent, depends on ossie-common, shades -all.jar, copies canonical schema at build. |
| converters/java/README.md | Adds top-level docs for the Java reactor layout and build commands. |
| converters/java/pom.xml | Introduces the Java reactor parent POM and module list. |
| converters/java/polaris/src/test/java/org/apache/ossie/converter/polaris/OsiPolarisConverterTest.java | Updates Polaris tests for generated model structure and YAML binding. |
| converters/java/polaris/src/main/java/org/apache/ossie/converter/polaris/PolarisImporter.java | Updates importer to produce generated model objects and extensions. |
| converters/java/polaris/src/main/java/org/apache/ossie/converter/polaris/PolarisExporter.java | Updates exporter to consume generated model objects (e.g., time dimension changes). |
| converters/java/polaris/src/main/java/org/apache/ossie/converter/polaris/PolarisClient.java | Adds a REST client for Polaris (Iceberg REST catalog interactions). |
| converters/java/polaris/src/main/java/org/apache/ossie/converter/polaris/OsiYamlGenerator.java | Replaces hand-written YAML generation with Jackson YAML binding of generated model. |
| converters/java/polaris/src/main/java/org/apache/ossie/converter/polaris/OsiPolarisConverter.java | Updates Polaris CLI to the generated model API (getSemanticModel(), etc.). |
| converters/java/polaris/src/main/java/org/apache/ossie/converter/polaris/OsiModelParser.java | Adds Jackson-based YAML parser into generated OsiModel. |
| converters/java/polaris/README.md | Updates build/run instructions and documents ossie-common usage/shaded jar output. |
| converters/java/polaris/pom.xml | Switches to reactor parent, depends on ossie-common, shades -all.jar, uses Jackson YAML. |
| converters/java/ossie-common/src/test/java/org/apache/ossie/model/OsiModelTest.java | Adds tests asserting deserialization/serialization of generated model types and canonical names. |
| converters/java/ossie-common/README.md | Documents schema-driven generation and the validation boundary (not a schema validator). |
| converters/java/ossie-common/pom.xml | Adds jsonschema2pojo generation config and artifact definition for the shared model. |
| .gitignore | Ignores IntelliJ .idea/ directories. |
| .github/workflows/java-ci.yml | Adds CI workflow to build/test the Java reactor on relevant changes. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@jbonofre Could you please take a look? Thanks. |
Summary
This PR is a partial implementation of #121.
It uses
jsonschema2pojo-maven-pluginto generate Java models fromcore-spec/osi-schema.jsonand packages them as the sharedossie-commonmodule for Java converters.converters/javaossie-common, Polaris, and Salesforce converters into the Java directorycore-spec/osi-schema.jsonOsiModelwith the generated modelsOsiSchemaandSemanticModelat the Salesforce converter boundaries-all.jarartifactsTesting
mvn -o clean verifyGenerated by Codex (GPT-5)
Related Issues
Checklist
Specification
core-spec/and follow the existing structureConverters
converters/is updated to reflect spec or ontology changesDocumentation
docs/is updated to reflect any user-facing changesCONTRIBUTING.mdis updated if the contribution process changedTests
pytest/ CI green)Compliance