how to implement public AbstractEntryProcessor(boolean applyOnBackup){} in 5.x.x for the backup in Hazelcast

151 Views Asked by At

Help me in the following code and how to used the backup on the Hazelcast migration of the hazelcast 3.x.x to 5.x.x

package com.hazelcast.map;

import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.HazelcastInstanceAware;
import com.hazelcast.nio.serialization.impl.BinaryInterface;

import java.util.Map;
// Interface AbstractEntryProcessor
@BinaryInterface
public abstract class AbstractEntryProcessor<K,V> implements EntryProcessor<K,V> {

    private final EntryBackupProcessor<K,V> entryBackupProcessor;
// Non Parameterize Constructor
    public AbstractEntryProcessor() {
        this(true);
    }
// Parameterize Constructor AbstractEntryProcessor
    public AbstractEntryProcessor(boolean applyOnBackup) {
        if (applyOnBackup) {
            entryBackupProcessor = new EntryBackupProcessorImpl();
        } else {
            entryBackupProcessor = null;
        }
    }
//EntryBackupProcessor
    @Override
    public final EntryBackupProcessor getBackupProcessor() {
        return entryBackupProcessor;
    }
// class EntryBackupProcessorImpl
    private class EntryBackupProcessorImpl implements EntryBackupProcessor<k,V>, HazelcastInstanceAware {
        // generated for EntryBackupProcessorImpl which doesn't implement HazelcastInstanceAware
        static final long serialVersionUID = -5081502753526394129L;

        @Override
        public void processBackup(Map.Entry<K,V> entry) {
            process(entry);
        }

        @Override
        public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
            final AbstractEntryProcessor<k,V> outer = AbstractEntryProcessor.this;
            if (outer instanceof HazelcastInstanceAware) {
                ((HazelcastInstanceAware) outer).setHazelcastInstance(hazelcastInstance);
            }
        }
    }
}

How to used the backup methods in 5.x.x versons of series

how to used the backup in the above question ?

1

There are 1 best solutions below

5
On BEST ANSWER

This should work:

public abstract class AbstractEntryProcessor implements EntryProcessor, HazelcastInstanceAware {

    protected transient HazelcastInstance hazelcastInstance;

    private final boolean applyOnBackup;

    // Non Parameterize Constructor
    public AbstractEntryProcessor() {
        this(true);
    }

    // Parameterize Constructor AbstractEntryProcessor
    public AbstractEntryProcessor(boolean applyOnBackup) {
        this.applyOnBackup = applyOnBackup;
    }

    //EntryBackupProcessor
    @Override
    public final EntryProcessor getBackupProcessor() {
        if (!applyOnBackup || this instanceof ReadOnly) {
            return null;
        }

        return this;
    }

    @Override
    public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
       this.hazelcastInstance = hazelcastInstance;
    }
}