package com.hwlcn.ldap.util;
import com.hwlcn.core.annotation.NotMutable;
import com.hwlcn.core.annotation.ThreadSafety;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@NotMutable()
@ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
public final class SASLMechanismInfo
{
private final boolean acceptsPassword;
private final boolean requiresPassword;
private final List<SASLOption> options;
private final String description;
private final String name;
public SASLMechanismInfo(final String name, final String description,
final boolean acceptsPassword,
final boolean requiresPassword,
final SASLOption... options)
{
this.name = name;
this.description = description;
this.acceptsPassword = acceptsPassword;
this.requiresPassword = requiresPassword;
if ((options == null) || (options.length == 0))
{
this.options = Collections.emptyList();
}
else
{
this.options = Collections.unmodifiableList(Arrays.asList(options));
}
}
public String getName()
{
return name;
}
public String getDescription()
{
return description;
}
public boolean acceptsPassword()
{
return acceptsPassword;
}
public boolean requiresPassword()
{
return requiresPassword;
}
public List<SASLOption> getOptions()
{
return options;
}
@Override()
public String toString()
{
final StringBuilder buffer = new StringBuilder();
toString(buffer);
return buffer.toString();
}
public void toString(final StringBuilder buffer)
{
buffer.append("SASLMechanismInfo(name='");
buffer.append(name);
buffer.append("', description='");
buffer.append(description);
buffer.append("', acceptsPassword=");
buffer.append(acceptsPassword);
buffer.append(", requiresPassword=");
buffer.append(requiresPassword);
buffer.append(", options={");
final Iterator<SASLOption> iterator = options.iterator();
while (iterator.hasNext())
{
iterator.next().toString(buffer);
if (iterator.hasNext())
{
buffer.append(", ");
}
}
buffer.append("})");
}
}