/module-ballerina-serdes

This is the Ballerina SerDes package, which is a part of the Ballerina Language Standard Library

Primary LanguageJavaApache License 2.0Apache-2.0

Ballerina SerDes Library

Build codecov Trivy GraalVM Check GitHub Last Commit Github issues

Deprecation Notice: This library is deprecated and will no longer be maintained or updated.

This library provides APIs for serializing and deserializing subtypes of Ballerina anydata type.

Proto3Schema

An instance of the serdes:Proto3Schema class is used to serialize and deserialize ballerina values using protocol buffers.

Create a serdes:Proto3Schema object

// Define a type which is a subtype of anydata.
type Student record {
    int id;
    string name;
    decimal fees;
};

// Create a schema object by passing the type.
serdes:Proto3Schema schema = check new (Student);

While instantiation of this object, an underlying proto3 schema generated for the provided typedesc.

Serialization

Student student = {
    id: 7894,
    name: "Liam",
    fees: 24999.99
};

// Serialize the record value to bytes.
byte[] bytes = check schema.serialize(student);

A value having the same type as the provided type can be serialized by invoking the serialize method on the previously instantiated serdes:Proto3Schema object. The underlying implementation uses the previously generated proto3 schema to serialize the provided value.

Deserialization

type Student record {
    int id;
    string name;
    decimal fees;
};

byte[] bytes = readSerializedDataToByteArray();
serdes:Proto3Schema schema = check new (Student);

// Deserialize the record value from bytes.
Student student = check schema.deserialize(bytes);

The serialized value (byte[]) can be again deserialized by invoking the deserialize method on the instantiated serdes:Proto3Schema object. The underlying implementation uses the previously generated proto3 schema and deserializes the provided byte[]. As the result of deserialization the method returns the ballerina value with the type represented by the typedesc value provided during the serdes:Proto3Schema object instantiation.

Issues and Projects

The Issues and Projects tabs are disabled for this repository as this is part of the Ballerina Standard Library. To report bugs, request new features, start new discussions, view project boards, etc., go to the Ballerina Standard Library parent repository.

This repository contains only the source code of the package.

Building from the Source

Setting Up the Prerequisites

  1. Download and install Java SE Development Kit (JDK) version 11 (from one of the following locations).

    • Oracle

    • OpenJDK

      Note: Set the JAVA_HOME environment variable to the path name of the directory into which you installed JDK.

  2. Export your Github Personal access token with the read package permissions as follows.

           export packageUser=<Username>
           export packagePAT=<Personal access token>
    

Building the Source

Execute the commands below to build from source.

  1. To build the package:

     ./gradlew clean build
    
  2. To run the integration tests:

     ./gradlew clean test
    
  3. To build the package without the tests:

     ./gradlew clean build -x test
    
  4. To debug the tests:

     ./gradlew clean build -Pdebug=<port>
    

Contributing to Ballerina

As an open source project, Ballerina welcomes contributions from the community.

For more information, go to the contribution guidelines.

Code of Conduct

All contributors are encouraged to read the Ballerina Code of Conduct.

Useful Links