refactor(converters): group Java modules and share generated Ossie models#235
Open
wForget wants to merge 3 commits into
Open
refactor(converters): group Java modules and share generated Ossie models#235wForget wants to merge 3 commits into
wForget wants to merge 3 commits into
Conversation
wForget
commented
Jul 21, 2026
| { | ||
| "$schema": "https://json-schema.org/draft/2020-12/schema", | ||
| "$id": "https://github.com/apache/ossie/core-spec/osi-schema.json", | ||
| "javaName": "OsiModel", |
Member
Author
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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