oracle.kv.impl.security.ProxyUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of oracle-nosql-server Show documentation
Show all versions of oracle-nosql-server Show documentation
NoSQL Database Server - supplies build and runtime support for the server (store) side of the Oracle NoSQL Database.
/*-
* 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