mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Matthew Swift
10.34.2012 5d9f190f1cb83d0c4f9c5e83079fa6dabf8bb5a5
Preparation work for OPENDJ-420: Rare SSLExceptions while handling LDAPS connections and big LDAP searches

Reformat and clean up code.
2 files modified
157 ■■■■ changed files
opends/src/server/org/opends/server/extensions/ConnectionSecurityProvider.java 45 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/RedirectingByteChannel.java 112 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/extensions/ConnectionSecurityProvider.java
@@ -23,34 +23,33 @@
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 *      Portions copyright 2012 ForgeRock AS.
 */
package org.opends.server.extensions;
import java.nio.channels.ByteChannel;
import java.security.cert.Certificate;
/**
 * This interface can be used to define connection security providers.
 *
 */
public interface ConnectionSecurityProvider {
    /**
     * Factory method: creates a new security ByteChannel
     * layer wrapping the provided ByteChannel.
     *
     * @param channel The byte channel to be wrapped.
     * @return A byte channel wrapping the specified byte channel.
 * This interface can be used to define connection security providers.
     */
    ByteChannel wrapChannel(ByteChannel channel);
public interface ConnectionSecurityProvider
{
    /**
     * Return a buffer size of the byte channel.
   *
     * @return Integer representing the byte channel application buffer size.
     */
    int getAppBufSize();
    /**
     * Return a certificate chain array.
     *
@@ -58,6 +57,17 @@
     */
    Certificate[] getClientCertificateChain();
  /**
   * Return the name of a provider.
   *
   * @return String representing the name of a provider.
   */
  String getName();
    /**
     * Return a Security Strength Factor.
     *
@@ -65,6 +75,8 @@
     */
    int getSSF();
    /**
     * Return <CODE>true</CODE> if a provider is secure.
     *
@@ -72,10 +84,15 @@
     */
    boolean isSecure();
    /**
     * Return the name of a provider.
   * Factory method: creates a new security ByteChannel layer wrapping the
   * provided ByteChannel.
     *
     * @return String representing the name of a provider.
   * @param channel
   *          The byte channel to be wrapped.
   * @return A byte channel wrapping the specified byte channel.
     */
    String getName();
  ByteChannel wrapChannel(ByteChannel channel);
}
opends/src/server/org/opends/server/extensions/RedirectingByteChannel.java
@@ -23,92 +23,138 @@
 *
 *
 *      Copyright 2006-2009 Sun Microsystems, Inc.
 *      Portions copyright 2012 ForgeRock AS.
 */
package org.opends.server.extensions;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;
/**
 * This class redirects read and write requests either to a child byte channel,
 * or a byte channel to be redirected to.
 *
 */
public class RedirectingByteChannel implements ByteChannel {
    private final ByteChannel child;
    private volatile ByteChannel redirect = null;
    private RedirectingByteChannel(ByteChannel child) {
        this.child = child;
    }
public class RedirectingByteChannel implements ByteChannel
{
    /**
     * Create an instance of a redirecting byte channel using the specified
     * byte channel as the child.
   * Create an instance of a redirecting byte channel using the specified byte
   * channel as the child.
     *
     * @param bc A byte channel to use as the child.
   * @param bc
   *          A byte channel to use as the child.
     * @return A redirecting byte channel.
     */
    public static
    RedirectingByteChannel getRedirectingByteChannel(ByteChannel bc) {
  public static RedirectingByteChannel getRedirectingByteChannel(
      final ByteChannel bc)
  {
        return new RedirectingByteChannel(bc);
    }
    /**
     * {@inheritDoc}
     */
    public int read(ByteBuffer buffer) throws IOException {
        if (redirect != null)
            return redirect.read(buffer);
        else
            return child.read(buffer);
  private final ByteChannel child;
  private volatile ByteChannel redirect = null;
  private RedirectingByteChannel(final ByteChannel child)
  {
    this.child = child;
    }
    /**
     * {@inheritDoc}
     */
    public void close() throws IOException {
  public void close() throws IOException
  {
        if(redirect != null)
    {
            redirect.close();
    }
        else
    {
            child.close();
    }
  }
  /**
   * Disable redirection.
   */
  public final void disable()
  {
    redirect = null;
  }
    /**
     * {@inheritDoc}
     */
    public boolean isOpen() {
  public boolean isOpen()
  {
        if(redirect != null)
    {
            return redirect.isOpen();
    }
        return child.isOpen();
    }
    /**
     * {@inheritDoc}
     */
    public int write(ByteBuffer buffer) throws IOException {
  public int read(final ByteBuffer buffer) throws IOException
  {
        if (redirect != null)
            return redirect.write(buffer);
        else
            return child.write(buffer);
    {
      return redirect.read(buffer);
    }
    else
    {
      return child.read(buffer);
    }
  }
    /**
     * Redirects a byte channel to a byte channel associated with the specified
     * provider.
     *
     * @param provider The provider to redirect to.
   * @param provider
   *          The provider to redirect to.
     */
    public final void redirect(ConnectionSecurityProvider provider) {
  public final void redirect(final ConnectionSecurityProvider provider)
  {
      redirect = provider.wrapChannel(child);
    }
    /**
     * Disable redirection.
   * {@inheritDoc}
     */
    public final void disable() {
        redirect = null;
  public int write(final ByteBuffer buffer) throws IOException
  {
    if (redirect != null)
    {
      return redirect.write(buffer);
    }
    else
    {
      return child.write(buffer);
    }
    }
}