package com.hwlcn.ldap.ldap.sdk.migrate.ldapjdk;
import java.io.Serializable;
import com.hwlcn.ldap.asn1.ASN1OctetString;
import com.hwlcn.ldap.ldap.sdk.Control;
import com.hwlcn.ldap.ldap.sdk.controls.ManageDsaITRequestControl;
import com.hwlcn.ldap.ldap.sdk.controls.PasswordExpiredControl;
import com.hwlcn.ldap.ldap.sdk.controls.PasswordExpiringControl;
import com.hwlcn.core.annotation.Extensible;
import com.hwlcn.core.annotation.NotMutable;
import com.hwlcn.core.annotation.ThreadSafety;
import com.hwlcn.ldap.util.ThreadSafetyLevel;
@Extensible()
@NotMutable()
@ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
public class LDAPControl
implements Serializable
{
public static final String MANAGEDSAIT =
ManageDsaITRequestControl.MANAGE_DSA_IT_REQUEST_OID;
public static final String PWEXPIRED =
PasswordExpiredControl.PASSWORD_EXPIRED_OID;
public static final String PWEXPIRING =
PasswordExpiringControl.PASSWORD_EXPIRING_OID;
private static final long serialVersionUID = 7828506470553016637L;
private final boolean isCritical;
private final byte[] value;
private final String oid;
public LDAPControl(final Control control)
{
oid = control.getOID();
isCritical = control.isCritical();
if (control.hasValue())
{
value = control.getValue().getValue();
}
else
{
value = null;
}
}
public LDAPControl(final String id, final boolean critical, final byte[] vals)
{
oid = id;
isCritical = critical;
value = vals;
}
public String getID()
{
return oid;
}
public boolean isCritical()
{
return isCritical;
}
public byte[] getValue()
{
return value;
}
public final Control toControl()
{
if (value == null)
{
return new Control(oid, isCritical, null);
}
else
{
return new Control(oid, isCritical, new ASN1OctetString(value));
}
}
public static Control[] toControls(final LDAPControl[] ldapControls)
{
if (ldapControls == null)
{
return null;
}
final Control[] controls = new Control[ldapControls.length];
for (int i=0; i < ldapControls.length; i++)
{
controls[i] = ldapControls[i].toControl();
}
return controls;
}
public static LDAPControl[] toLDAPControls(final Control[] controls)
{
if (controls == null)
{
return null;
}
final LDAPControl[] ldapControls = new LDAPControl[controls.length];
for (int i=0; i < controls.length; i++)
{
ldapControls[i] = new LDAPControl(controls[i]);
}
return ldapControls;
}
public LDAPControl duplicate()
{
return new LDAPControl(oid, isCritical, value);
}
@Override()
public String toString()
{
return toControl().toString();
}
}