Skip to content

refactor(converters): group Java modules and share generated Ossie models#235

Open
wForget wants to merge 3 commits into
apache:mainfrom
wForget:java-refactor
Open

refactor(converters): group Java modules and share generated Ossie models#235
wForget wants to merge 3 commits into
apache:mainfrom
wForget:java-refactor

Conversation

@wForget

@wForget wForget commented Jul 20, 2026

Copy link
Copy Markdown
Member

Summary

This PR is a partial implementation of #121.

It uses jsonschema2pojo-maven-plugin to generate Java models from core-spec/osi-schema.json and packages them as the shared ossie-common module for Java converters.

  • Add a Maven reactor under converters/java
  • Move ossie-common, Polaris, and Salesforce converters into the Java directory
  • Generate shared Java POJOs from core-spec/osi-schema.json
  • Replace Polaris' hand-written OsiModel with the generated models
  • Use OsiSchema and SemanticModel at the Salesforce converter boundaries
  • Produce thin Maven artifacts and executable -all.jar artifacts
  • Update documentation, resource paths, and tests

Testing

  • mvn -o clean verify
  • 25 tests passed
  • 14 Salesforce schema-dependent tests skipped because the external Salesforce schema is not included in the repository
  • Apache RAT checks passed

Generated by Codex (GPT-5)

Related Issues

Checklist

Specification

  • Spec changes are included in core-spec/ and follow the existing structure
  • Spec changes have been discussed on the mailing list or in a linked issue
  • Breaking changes to the spec are clearly called out in the summary

Converters

  • Converter logic in converters/ is updated to reflect spec or ontology changes
  • New converters include tests under the converter's test directory

Documentation

  • docs/ is updated to reflect any user-facing changes
  • New features or behaviors are documented with examples where appropriate
  • CONTRIBUTING.md is updated if the contribution process changed

Tests

  • All existing tests pass (pytest / CI green)
  • New functionality is covered by tests

Compliance

  • ASF license headers are present on all new source files
  • No third-party dependencies are added without PMC/IPMC approval

@wForget wForget changed the title refactor(converters): group Java modules and share generated Ossie models [WIP]refactor(converters): group Java modules and share generated Ossie models Jul 20, 2026
@wForget wForget changed the title [WIP]refactor(converters): group Java modules and share generated Ossie models refactor(converters): group Java modules and share generated Ossie models Jul 21, 2026
Comment thread core-spec/osi-schema.json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/apache/ossie/core-spec/osi-schema.json",
"javaName": "OsiModel",

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

javaName explicitly sets the jsonschema2pojo-maven-plugin generated root class name to OsiModel instead of deriving OsiSchema from the schema file name.

@wForget
wForget marked this pull request as ready for review July 21, 2026 02:10
Copilot AI review requested due to automatic review settings July 21, 2026 02:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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/java Maven 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 as ossie-common) and migrated Polaris/Salesforce to use org.apache.ossie.model.*.
  • Reworked Salesforce converter into a configurable “dynamic pipeline” architecture with mapping/handlers, updated docs/resources/tests, and produced shaded *-all.jar artifacts.

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.

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.

2 participants