Code Monkey home page Code Monkey logo

module-ballerina-serdes's Introduction

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

module-ballerina-serdes's People

Contributors

aashikam avatar anupama-pathirage avatar ballerina-bot avatar dilansachi avatar hindujab avatar keizer619 avatar maheshika avatar mohamedsabthar avatar niveathika avatar shafreenanfar avatar tharindadilshan avatar tharmigank avatar thisaruguruge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.