package com.hwlcn.ldap.ldap.sdk.controls; import com.hwlcn.ldap.asn1.ASN1OctetString; import com.hwlcn.ldap.ldap.sdk.BindResult; import com.hwlcn.ldap.ldap.sdk.Control; import com.hwlcn.ldap.ldap.sdk.DecodeableControl; import com.hwlcn.ldap.ldap.sdk.LDAPException; import com.hwlcn.ldap.ldap.sdk.ResultCode; import com.hwlcn.core.annotation.NotMutable; import com.hwlcn.core.annotation.ThreadSafety; import com.hwlcn.ldap.util.ThreadSafetyLevel; import static com.hwlcn.ldap.ldap.sdk.controls.ControlMessages.*; import static com.hwlcn.ldap.util.Validator.*; @NotMutable() @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE) public final class AuthorizationIdentityResponseControl extends Control implements DecodeableControl { public static final String AUTHORIZATION_IDENTITY_RESPONSE_OID = "2.16.840.1.113730.3.4.15"; private static final long serialVersionUID = -6315724175438820336L; private final String authorizationID; AuthorizationIdentityResponseControl() { authorizationID = null; } public AuthorizationIdentityResponseControl(final String authorizationID) { super(AUTHORIZATION_IDENTITY_RESPONSE_OID, false, new ASN1OctetString(authorizationID)); ensureNotNull(authorizationID); this.authorizationID = authorizationID; } public AuthorizationIdentityResponseControl(final String oid, final boolean isCritical, final ASN1OctetString value) throws LDAPException { super(oid, isCritical, value); if (value == null) { throw new LDAPException(ResultCode.DECODING_ERROR, ERR_AUTHZID_RESPONSE_NO_VALUE.get()); } else { authorizationID = value.stringValue(); } } public AuthorizationIdentityResponseControl decodeControl(final String oid, final boolean isCritical, final ASN1OctetString value) throws LDAPException { return new AuthorizationIdentityResponseControl(oid, isCritical, value); } public static AuthorizationIdentityResponseControl get(final BindResult result) throws LDAPException { final Control c = result.getResponseControl(AUTHORIZATION_IDENTITY_RESPONSE_OID); if (c == null) { return null; } if (c instanceof AuthorizationIdentityResponseControl) { return (AuthorizationIdentityResponseControl) c; } else { return new AuthorizationIdentityResponseControl(c.getOID(), c.isCritical(), c.getValue()); } } public String getAuthorizationID() { return authorizationID; } @Override() public String getControlName() { return INFO_CONTROL_NAME_AUTHZID_RESPONSE.get(); } @Override() public void toString(final StringBuilder buffer) { buffer.append("AuthorizationIdentityResponseControl(authorizationID='"); buffer.append(authorizationID); buffer.append("', isCritical="); buffer.append(isCritical()); buffer.append(')'); } }