feat(jdk8): move files to new folder to avoid resources compiled.
This commit is contained in:
109
jdkSrc/jdk8/com/sun/jndi/ldap/spi/LdapDnsProvider.java
Normal file
109
jdkSrc/jdk8/com/sun/jndi/ldap/spi/LdapDnsProvider.java
Normal file
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.jndi.ldap.spi;
|
||||
|
||||
import javax.naming.Context;
|
||||
import javax.naming.NamingException;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Service-provider class for DNS lookups when performing LDAP operations.
|
||||
*
|
||||
* <p> An LDAP DNS provider is a concrete subclass of this class that
|
||||
* has a zero-argument constructor. LDAP DNS providers are located using the
|
||||
* ServiceLoader facility, as specified by
|
||||
* {@linkplain javax.naming.directory.InitialDirContext InitialDirectContext}.
|
||||
*
|
||||
* The
|
||||
* {@link java.util.ServiceLoader ServiceLoader} is used to create and register
|
||||
* implementations of {@code LdapDnsProvider}.
|
||||
*
|
||||
* <p> An LDAP DNS provider can be used in environments where the default
|
||||
* DNS resolution mechanism is not sufficient to accurately pinpoint the
|
||||
* correct LDAP servers needed to perform LDAP operations. For example, in an
|
||||
* environment containing a mix of {@code ldap} and {@code ldaps} servers
|
||||
* you may want the {@linkplain javax.naming.ldap.LdapContext LdapContext}
|
||||
* to query {@code ldaps} servers only.
|
||||
*
|
||||
* @since 12
|
||||
*/
|
||||
public abstract class LdapDnsProvider {
|
||||
|
||||
// The {@code RuntimePermission("ldapDnsProvider")} is
|
||||
// necessary to subclass and instantiate the {@code LdapDnsProvider} class.
|
||||
private static final RuntimePermission DNSPROVIDER_PERMISSION =
|
||||
new RuntimePermission("ldapDnsProvider");
|
||||
|
||||
/**
|
||||
* Creates a new instance of {@code LdapDnsProvider}.
|
||||
*
|
||||
* @throws SecurityException if a security manager is present and its
|
||||
* {@code checkPermission} method doesn't allow
|
||||
* the {@code RuntimePermission("ldapDnsProvider")}.
|
||||
*/
|
||||
protected LdapDnsProvider() {
|
||||
this(checkPermission());
|
||||
}
|
||||
|
||||
private LdapDnsProvider(Void unused) {
|
||||
// nothing to do.
|
||||
}
|
||||
|
||||
private static Void checkPermission() {
|
||||
final SecurityManager sm = System.getSecurityManager();
|
||||
if (sm != null) {
|
||||
sm.checkPermission(DNSPROVIDER_PERMISSION);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lookup the endpoints and domain name for the given {@link Context}
|
||||
* {@link Context#PROVIDER_URL provider URL} and environment. The resolved
|
||||
* endpoints and domain name are returned as an
|
||||
* {@link LdapDnsProviderResult}.
|
||||
*
|
||||
* <p> An endpoint is a {@code String} representation of an LDAP URL which
|
||||
* points to an LDAP server to be used for LDAP operations. The syntax of
|
||||
* an LDAP URL is defined by <a href="http://www.ietf.org/rfc/rfc2255.txt">
|
||||
* <i>RFC 2255: The LDAP URL Format</i></a>.
|
||||
*
|
||||
* @param url The {@link Context} {@link Context#PROVIDER_URL provider URL}
|
||||
* @param env The {@link Context} environment.
|
||||
*
|
||||
* @return an {@link LdapDnsProviderResult} or empty {@code Optional}
|
||||
* if the lookup fails.
|
||||
*
|
||||
* @throws NamingException if the {@code url} is not valid or an error
|
||||
* occurred while performing the lookup.
|
||||
* @throws NullPointerException if either {@code url} or {@code env} are
|
||||
* {@code null}.
|
||||
*/
|
||||
public abstract Optional<LdapDnsProviderResult> lookupEndpoints(
|
||||
String url, Map<?,?> env) throws NamingException;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user