Shijin Bose K
Shijin Bose K

Reputation: 141

Ignite put a POJO bean value to cache by rest api

I want to put POJO bean key value pair to Ignite cache using REST API. I can put string key value pair to cache. but here i want to put a class as key value. How can i create REST url for this. My config file look like this

<property name="cacheConfiguration">
        <bean class="org.apache.ignite.configuration.CacheConfiguration">
            <!-- Set a cache name. -->
            <property name="name" value="cacheName"/>

            <!-- Set cache mode. -->
                    <property name="cacheMode" value="PARTITIONED"/>
        <property name="indexedTypes">
        <list>
        <value>com.test.EntitlementKey</value>
        <value>com.test.Entitlement</value>
        </list>
        </property>
        </bean>
    </property>

And Entitilement Class look like this

import org.apache.ignite.cache.query.annotations.QuerySqlField;
public class Entitlement {

    @QuerySqlField

    private String name;

    @QuerySqlField

    private String desc;
public String getname() {
    return name;
}
public void setname(String name) {
    this.name = name;
}
public String getdesc() {
    return desc;
}
public void setdesc(String desc) {
    this.desc = desc;
}

And EntitlementKey class

public class EntitlementKey {
    @QuerySqlField(index = true)
    private String eid;

    @QuerySqlField
    private String id;
public String getEid() {
        return eid;
    }

    public void setEid(String eid) {
        this.eid = eid;
    }
    public String getid() {
        return id;
    }

    public void setid(String id) {

        this.id = id;
    }

Upvotes: 0

Views: 323

Answers (1)

Evgenii Zhuravlev
Evgenii Zhuravlev

Reputation: 3017

Currently, in master, you can find an implementation of ticket, which allows using internal java types as keys and values.

At this moment if you want to use your custom types, you need to use ConnectorMessageInterceptor interface. Once you implement and configure it, you will start receiving a callback for all keys and values passed back and forth. So you can encode your object as a String somehow and then convert it to a real object inside interceptor. And the opposite: before returning object from the cache you can convert it to some String form.

Upvotes: 0

Related Questions