ballerina/reflect package

Package overview

This package provides utility methods for obtaining reflective information about the Ballerina runtime.

Samples

Check whether two objects are equal

The reflect:equals function checks whether two objects in the Ballerina runtime, including arrays, are equal.

The samples below show how to compare primitive types.

// Compare two strings.
string s1 = "a";
string s2 = "a";
boolean equal = reflect:equals(s1,s2); // Returns `true`

// Compare two string arrays.
string[] s1 = ["a", "b"];
string[] s2 = ["a", "b"];
boolean equalArrays = reflect:equals(s1,s2);  // Returns `true`

The sample below shows how to compare complex types.

// Compare two JSON objects.
json jObj1 = {   name:"Target",
                 location:{
                              address1:"19, sample road",
                              postalCode: 6789
                          },
                 products:[{price: 40.50, isNew: true, name:"apple"},
                           {name:"orange", price: 30.50}],
                 manager: ()
             };
json jObj2 = {   name:"Target",
                 location:{
                              address1:"19, sample road",
                              postalCode: 6789
                          },
                 products:[{price: 40.50, isNew: true, name:"apple"},
                           {name:"orange", price: 30.50}],
                 manager: ()
             };
boolean equalJsons = reflect:equals(jObj1,jObj2);

Get service annotations

The sample below shows how to retrieve all the annotations of a service:

@http:ServiceConfig { basePath: "/helloWorld" }
service<http:Service> hello bind { port: 9090 } {
    hello(endpoint caller, http:Request req) {
        http:Response res = new;
        res.setTextPayload("hello world");
        var result = caller->respond(res);
    }
}

reflect:annotationData[] annotations= reflect:getServiceAnnotations(hello); 
string annoName = annotations[0].name; //Eg. “ServiceConfig”
string annoPkg = annotations[0].pkgName; //Eg/ “ballerina.http”

Records Summary

Record Description
annotationData
anyStruct

Functions Summary

Return Type Function and Description
boolean equals(any value1, any value2)

Check whether 2 values are deeply equal. Supports string, int, float, boolean, type, structs, maps, arrays, any, JSON. Any other type returns FALSE.

annotationData[] getFunctionAnnotations(any functionPointer)
annotationData[] getResourceAnnotations(typedesc serviceType, string resourceName)
annotationData[] getServiceAnnotations(typedesc serviceType)
annotationData[] getStructAnnotations(typedesc structType)
annotationData[] getStructFieldAnnotations(typedesc structType, string fieldName)

public type annotationData record

Field Name Data Type Default Value Description
name string
pkgName string
value reflect:0.0.0:anyStruct

public type anyStruct record

public function equals(any value1, any value2) returns (boolean)

Check whether 2 values are deeply equal. Supports string, int, float, boolean, type, structs, maps, arrays, any, JSON. Any other type returns FALSE.

Parameter Name Data Type Default Value Description
value1 any

The first value for equality.

value2 any

The second value for equality.

Return Type Description
boolean

TRUE if values are deeply equal, else FALSE.

public function getFunctionAnnotations(any functionPointer) returns (annotationData[])

Parameter Name Data Type Default Value Description
functionPointer any
Return Type Description
annotationData[]

public function getResourceAnnotations(typedesc serviceType, string resourceName) returns (annotationData[])

Parameter Name Data Type Default Value Description
serviceType typedesc
resourceName string
Return Type Description
annotationData[]

public function getServiceAnnotations(typedesc serviceType) returns (annotationData[])

Parameter Name Data Type Default Value Description
serviceType typedesc
Return Type Description
annotationData[]

public function getStructAnnotations(typedesc structType) returns (annotationData[])

Parameter Name Data Type Default Value Description
structType typedesc
Return Type Description
annotationData[]

public function getStructFieldAnnotations(typedesc structType, string fieldName) returns (annotationData[])

Parameter Name Data Type Default Value Description
structType typedesc
fieldName string
Return Type Description
annotationData[]