All Downloads are FREE. Search and download functionalities are using the official Maven repository.

oracle.kv.impl.security.ProxyUtils Maven / Gradle / Ivy

Go to download

NoSQL Database Server - supplies build and runtime support for the server (store) side of the Oracle NoSQL Database.

There is a newer version: 18.3.10
Show newest version
/*-
 * Copyright (C) 2011, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This file was distributed by Oracle as part of a version of Oracle NoSQL
 * Database made available at:
 *
 * http://www.oracle.com/technetwork/database/database-technologies/nosqldb/downloads/index.html
 *
 * Please see the LICENSE file included in the top-level directory of the
 * appropriate version of Oracle NoSQL Database for a copy of the license and
 * additional information.
 */
package oracle.kv.impl.security;

import java.lang.reflect.Method;
import java.rmi.Remote;
import java.util.HashSet;
import java.util.Set;

/**
 * A collection of common code used by proxy-building code in this package.
 */
final class ProxyUtils {

    /* Not instantiable */
    private ProxyUtils() {
    }

    static Set> findRemoteInterfaces(Class implClass) {

        /*
         * Build a set of the most-derived interfaces that extend the
         * Remote interface.
         */
        final Set> remoteInterfaces = new HashSet>();
        for (Class iface : implClass.getInterfaces()) {
            if (Remote.class.isAssignableFrom(iface)) {

                /* This interface either is, or extends Remote */
                for (Class knownIface : remoteInterfaces) {
                    if (knownIface.isAssignableFrom(iface)) {
                        /* iface is a more derived class - replace knowIface */
                        remoteInterfaces.remove(knownIface);
                    }
                }
                remoteInterfaces.add(iface);
            }
        }

        return remoteInterfaces;
    }

    static Set findRemoteInterfaceMethods(Class implClass) {

        /*
         * First, build a set of the most-derived interfaces that extend
         * the Remote interface.
         */
        final Set> remoteInterfaces = findRemoteInterfaces(implClass);

        /* Then collect the methods that are included in those interfaces */
        final Set remoteInterfaceMethods = new HashSet();
        for (Class remoteInterface : remoteInterfaces) {
            for (Method method : remoteInterface.getMethods()) {
                remoteInterfaceMethods.add(method);
            }
        }

        return remoteInterfaceMethods;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy