简体   繁体   中英

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

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

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 implements EntryProcessor {

    private final EntryBackupProcessor 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, HazelcastInstanceAware {
        // generated for EntryBackupProcessorImpl which doesn't implement HazelcastInstanceAware
        static final long serialVersionUID = -5081502753526394129L;

        @Override
        public void processBackup(Map.Entry entry) {
            process(entry);
        }

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

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

how to used the backup in the above question?

This should work:

public abstract class AbstractEntryProcessor implements EntryProcessor {

    private final EntryProcessor 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 EntryProcessor getBackupProcessor() {
        return entryBackupProcessor;
    }

    // class EntryBackupProcessorImpl
    private class EntryBackupProcessorImpl implements EntryProcessor, HazelcastInstanceAware {
        // generated for EntryBackupProcessorImpl which doesn't implement HazelcastInstanceAware
        static final long serialVersionUID = -5081502753526394129L;

        @Override
        public Object process(Map.Entry entry) {
            return AbstractEntryProcessor.this.process(entry);
        }

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM