{"id":22281303,"url":"https://github.com/infinispan/protostream","last_synced_at":"2025-05-16T02:07:38.487Z","repository":{"id":536916,"uuid":"11369509","full_name":"infinispan/protostream","owner":"infinispan","description":"ProtoStream is a serialization library based on Protocol Buffers","archived":false,"fork":false,"pushed_at":"2025-05-12T16:08:03.000Z","size":3191,"stargazers_count":43,"open_issues_count":13,"forks_count":36,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-05-12T17:27:03.102Z","etag":null,"topics":["infinispan","java","protobuf","serialization-library"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/infinispan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-07-12T13:39:36.000Z","updated_at":"2025-05-08T08:18:43.000Z","dependencies_parsed_at":"2024-01-24T18:51:09.968Z","dependency_job_id":"aea5ca01-0ffa-419d-99a7-21ea13156052","html_url":"https://github.com/infinispan/protostream","commit_stats":null,"previous_names":[],"tags_count":143,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infinispan%2Fprotostream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infinispan%2Fprotostream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infinispan%2Fprotostream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infinispan%2Fprotostream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/infinispan","download_url":"https://codeload.github.com/infinispan/protostream/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453652,"owners_count":22073617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["infinispan","java","protobuf","serialization-library"],"created_at":"2024-12-03T16:16:59.311Z","updated_at":"2025-05-16T02:07:38.457Z","avatar_url":"https://github.com/infinispan.png","language":"Java","readme":"# ![ProtoStream](./infinispan_protostream_stacked.png)\n\n![Maven Central Version](https://img.shields.io/maven-central/v/org.infinispan.protostream/protostream?versionPrefix=5\u0026style=for-the-badge)\n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/infinispan/protostream/test_report.yaml?branch=main\u0026style=for-the-badge)\n[![License](https://img.shields.io/github/license/infinispan/infinispan?style=for-the-badge\u0026logo=apache)](https://www.apache.org/licenses/LICENSE-2.0)\n![Supported JVM Versions](https://img.shields.io/badge/JVM-17-green.svg?style=for-the-badge\u0026logo=openjdk)\n[![Javadoc](https://img.shields.io/badge/Javadoc-online-green.svg?style=for-the-badge\u0026logo=openjdk)](http://www.javadoc.io/doc/org.infinispan.protostream/protostream)\n[![Project Chat](https://img.shields.io/badge/zulip-join_chat-pink.svg?style=for-the-badge\u0026logo=zulip)](https://infinispan.zulipchat.com/)\n\nProtoStream is a Java serialization library based on the [Protocol Buffers](https://developers.google.com/protocol-buffers/) data format. \nIt is open source software released under the [Apache License, v2.0](https://www.apache.org/licenses/LICENSE-2.0 \"The Apache License, v2.0\").\nProtoStream is part of the [Infinispan](https://github.com/infinispan/infinispan) platform, but can be used standalone.\nFor more information about Infinispan visit the project's website on [https://infinispan.org](https://infinispan.org \"the Infinispan project page\").\nDocumentation on how to use ProtoStream in your projects is available [https://infinispan.org/docs/stable/titles/encoding/encoding.html#marshalling_user_types](here).\n\nFeatures\n--------\n* annotate your Java classes, enums and records to automatically generate the `.proto` schema\n* provide adapters for third-party classes\n* compile-time generation of high-performance protocol buffers serializers / deserializers\n* Protocol Buffers 2 and 3\n* support for custom annotations\n* provides a library of ready-made adapters for common JDK classes (`BigDecimal`, `UUID`, `ArrayList`, `LocalDateTime` and more)\n* programmatic `.proto` schema generation\n* built-in backwards compatibility checks to ensure schemas use [https://protobuf.dev/programming-guides/dos-donts/](Protocol Buffers best practices)\n\nUsage\n-----\n\nIf you are using Maven, add this dependency to your `pom.xml` file:\n   \n```xml\n\u003cdependency\u003e\n   \u003cgroupId\u003eorg.infinispan.protostream\u003c/groupId\u003e\n   \u003cartifactId\u003eprotostream\u003c/artifactId\u003e\n   \u003cversion\u003e5.0.12.Final\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nIf you are using Gradle, add this dependency to your build file:\n\n```\ndependencies { \n    implementation 'org.infinispan.protostream:protostream:5.0.12.Final'\n}\n```\n\n\nAnnotation processor\n--------------------\n\nThe Java compiler discovers annotation processors differently, depending on the version and the options in use.\nWith Java up to version 21, it's enough to put the `protostream-processor` dependency on the classpath and it \nwill be automatically discovered by the service loader mechanism. Another way, which is mandatory since Java 22,\nis to use the `--processor-path` option.\n\n```shell\njavac --processor-path /path/to/protostream-processor-5.0.5.Final.jar:... ...\n```\n\nUsing Maven:\n```xml\n\u003cplugin\u003e\n  \u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\n  \u003cversion\u003e3.13.0\u003c/version\u003e\n  \u003cconfiguration\u003e\n    \u003c!-- Annotation processors --\u003e\n    \u003cannotationProcessorPaths\u003e\n      \u003cannotationProcessorPath\u003e\n        \u003cgroupId\u003eorg.infinispan.protostream\u003c/groupId\u003e\n        \u003cartifactId\u003eprotostream-processor\u003c/artifactId\u003e\n        \u003cversion\u003e5.0.5.Final\u003c/version\u003e\n      \u003c/annotationProcessorPath\u003e\n    \u003c/annotationProcessorPaths\u003e\n  \u003c/configuration\u003e\n\u003c/plugin\u003e\n```\n\nUsing Gradle:\n```\ndependencies {\n    annotationProcessor 'org.infinispan.protostream:protostream-processor:5.0.5.Final'\n    ...\n}\n```\n\nThe annotation processor supports some configuration options:\n\n* `protostream.debug` prints out debug information during the processing phase.\n* `protostream.fullyqualifiedannotations` when generating the `.proto` files, the annotation names are stripped of the package name. This flag keeps the fully-qualified annotation names in the generated files.\n\nYou can pass these arguments to `javac` using the `-Aoption=value` argument. \nThe following `pom.xml` snippet shows how to do it with Maven:\n\n```xml\n\u003cplugin\u003e\n  \u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\n  \u003cversion\u003e3.12.1\u003c/version\u003e\n  \u003cconfiguration\u003e\n    \u003ccompilerArgs\u003e\n      \u003carg\u003e-Aprotostream-debug=true\u003c/arg\u003e\n    \u003c/compilerArgs\u003e\n    \u003c!-- Annotation processors --\u003e\n    \u003cannotationProcessorPaths\u003e\n      \u003cannotationProcessorPath\u003e\n        \u003cgroupId\u003eorg.infinispan.protostream\u003c/groupId\u003e\n        \u003cartifactId\u003eprotostream-processor\u003c/artifactId\u003e\n        \u003cversion\u003e5.0.5.Final\u003c/version\u003e\n      \u003c/annotationProcessorPath\u003e\n    \u003c/annotationProcessorPaths\u003e\n  \u003c/configuration\u003e\n\u003c/plugin\u003e\n```\n\nRequirements\n------------\n\nTarget runtime platform is Java 17 or newer.\n\nRequires Java 17 or newer to build.\n\nMaven 3.6.0 or newer.\n\nBugs\n----\nBug reports go [here](https://issues.jboss.org/projects/IPROTO)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfinispan%2Fprotostream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfinispan%2Fprotostream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfinispan%2Fprotostream/lists"}