Package org.fcrepo.server.journal.readerwriter.multicast.rmi

Source Code of org.fcrepo.server.journal.readerwriter.multicast.rmi.MockRmiJournalReceiver

/* The contents of this file are subject to the license and copyright terms
* detailed in the license directory at the root of the source tree (also
* available online at http://fedora-commons.org/license/).
*/

package org.fcrepo.server.journal.readerwriter.multicast.rmi;

import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

import java.util.Arrays;

import org.fcrepo.server.journal.JournalException;
import org.fcrepo.server.journal.readerwriter.multicast.rmi.RmiJournalReceiverInterface;


@SuppressWarnings("serial")
public class MockRmiJournalReceiver
        extends UnicastRemoteObject
        implements RmiJournalReceiverInterface {

    private static boolean trace;

    private int howManyCallsToOpenFile;

    private int howManyCallsToWriteText;

    private int howManyCallsToClosefile;

    private boolean openFileThrowsException;

    private boolean writeTextThrowsException;

    private boolean closeFileThrowsException;

    private String repositoryHash;

    private String filename;

    private String indexedHash;

    private String text;

    // -------------------------------------------------------------------------
    // Mocking infrastructure.
    // -------------------------------------------------------------------------

    public MockRmiJournalReceiver()
            throws RemoteException {
    }

    public int howManyCallsToClosefile() {
        return howManyCallsToClosefile;
    }

    public int howManyCallsToOpenFile() {
        return howManyCallsToOpenFile;
    }

    public int howManyCallsToWriteText() {
        return howManyCallsToWriteText;
    }

    public void setCloseFileThrowsException(boolean closeFileThrowsException) {
        this.closeFileThrowsException = closeFileThrowsException;
    }

    public void setOpenFileThrowsException(boolean openFileThrowsException) {
        this.openFileThrowsException = openFileThrowsException;
    }

    public void setWriteTextThrowsException(boolean writeTextThrowsException) {
        this.writeTextThrowsException = writeTextThrowsException;
    }

    public String getRepositoryHash() {
        return repositoryHash;
    }

    public String getFilename() {
        return filename;
    }

    public String getIndexedHash() {
        return indexedHash;
    }

    public String getText() {
        return text;
    }

    // -------------------------------------------------------------------------
    // Mocked methods.
    // -------------------------------------------------------------------------

    public void openFile(String repositoryHash, String filename)
            throws RemoteException, JournalException {
        howManyCallsToOpenFile++;

        if (openFileThrowsException) {
            throw new RemoteException("openFile throws exception");
        }

        this.repositoryHash = repositoryHash;
        this.filename = filename;

        if (trace) {
            System.out.println("openFile(" + repositoryHash + ", " + filename
                    + ")");
        }
    }

    public void writeText(String indexedHash, String text)
            throws RemoteException, JournalException {
        howManyCallsToWriteText++;

        if (writeTextThrowsException) {
            throw new RemoteException("writeText throws exception");
        }

        this.indexedHash = indexedHash;
        this.text = text;

        if (trace) {
            System.out.println("writeText(" + indexedHash + ", " + text + ")");
        }
    }

    public void closeFile() throws RemoteException, JournalException {
        howManyCallsToClosefile++;

        if (closeFileThrowsException) {
            throw new JournalException("closeFile throws exception");
        }

        if (trace) {
            System.out.println("closeFile()");
        }
    }

    /**
     * Use this if you need to create an actual RMI connection to test the
     * RmiTransport.
     */
    public static void main(String[] args) throws RemoteException,
            AlreadyBoundException {
        trace = true;

        try {
            MockRmiJournalReceiver receiver = new MockRmiJournalReceiver();

            if (Arrays.asList(args).contains("throwException")) {
                receiver.setOpenFileThrowsException(true);
            }

            Registry registry = LocateRegistry.createRegistry(1099);
            registry.bind("RmiJournalReceiver", receiver);
            Thread.sleep(2000);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
TOP

Related Classes of org.fcrepo.server.journal.readerwriter.multicast.rmi.MockRmiJournalReceiver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.