Skip to content

mitre-public/avro

 
 

Repository files navigation

Important

The Rust SDK is moving to https://github.com/apache/avro-rs. Please use it for new issues and pull requests!

Apache Avro™Avro Logo

Current CI status (Github servers)

test c test c# test c++ test java test javascript test perl test ruby test python test php

Current CI status (ARM based servers)

test c ARM test c# ARM test c++ ARM test java ARM test javascript ARM test perl ARM test ruby ARM test python ARM test php ARM

Current CodeQL status

codeql c# codeql java codeql javascript codeql python


This repository contains a modified Java implementation of Apache Avro. It addresses the following 3 issues:

  1. The changes in this version allow for the serialization of java generics in supertypes, such as the example below:
class AbstractRecord<T> { T recordType; }

/**
 * The template type will be lost on write-out and deserialization will fail without this change
 * @param <Y> the concrete template type stored in {@link AbstractRecord#recordType}
 */
final class OutputRecord<Y> extends AbstractRecord<Y> {}
  1. Support configuration of serialization field order via the @AvroOrder annotation
final class OutputRecord {
  
  @AvroOrder(Schema.Field.Order.ASCENDING)
  final String outputField;
}
  1. Prior to the introduction to the @AvroAliases annotation, support configuring multiple aliases via a single annotation. This feature has been removed for avro versions >= 1.10
@AvroAlias({"org.mitre.A", "org.mitre.B"})
final class OutputRecord {}

Note: self-hosted ARM based java actions have been removed

Releasing new versions

  • Update main with the latest Avro changes and rebase the forked changes
  • Ensure you have the upstream avro fork as a git remote and fetch tags
    git remote add fork-source https://github.com/apache/avro
    git fetch --tags fork-source
  • Check out a new release branch from the relevant avro release tag
    git checkout -b release/1.0.0-1.12.0 release-1.12.0
  • Apply the most recent fork change to that branch
    git cherry-pick <ref-from-main>
  • If adjusting the fork itself, bump the version in lang/java/avro/pom.xml to match the forked changes. Otherwise, you can rely on the project version itself.
  • Deploy the final jars from lang/java/avro mvn deploy -DskipTests -DaltDeploymentRepository=repository-id::repository-url
  • Push the release branch to remote

NOTICE

This work was produced for the U.S. Government under Contract 693KA8-22-C-00001 and is subject to Federal Aviation Administration Acquisition Management System Clause 3.5-13, Rights In Data-General (Oct. 2014), Alt. III and Alt. IV (Oct. 2009).

The contents of this document reflect the views of the author and The MITRE Corporation and do not necessarily reflect the views of the Federal Aviation Administration (FAA) or the Department of Transportation (DOT). Neither the FAA nor the DOT makes any warranty or guarantee, expressed or implied, concerning the content or accuracy of these views.

For further information, please contact The MITRE Corporation, Contracts Management Office, 7515 Colshire Drive, McLean, VA 22102-7539, (703) 983-6000.

© 2024 The MITRE Corporation. All Rights Reserved.


Approved for Public Release; Distribution Unlimited. Public Release Case Number 24-3517


Apache Avro™ is a data serialization system.

Learn more about Avro, please visit our website at:

https://avro.apache.org/

To contribute to Avro, please read:

https://cwiki.apache.org/confluence/display/AVRO/How+To+Contribute

You can use devcontainers to develop Avro:

  • Open in Visual Studio Code
  • Open in Github Codespaces

Trademark & logos

Apache®, Apache Avro and the Apache Avro airplane logo are trademarks of The Apache Software Foundation.

The Apache Avro airplane logo on this page has been designed by Emma Kellam for use by this project.

About

Apache Avro is a data serialization system.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Java 48.4%
  • C# 16.2%
  • C 10.1%
  • C++ 8.5%
  • Python 4.6%
  • JavaScript 3.6%
  • Other 8.6%