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;
    }
}