| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Portions Copyright 2006 Sun Microsystems, Inc. |
| | | * Portions Copyright 2006-2007 Sun Microsystems, Inc. |
| | | */ |
| | | package org.opends.server.protocols.ldap; |
| | | |
| | |
| | | import org.opends.server.protocols.asn1.ASN1OctetString; |
| | | import org.opends.server.protocols.asn1.ASN1Sequence; |
| | | import org.opends.server.types.Control; |
| | | import org.opends.server.types.DebugLogLevel; |
| | | |
| | | import static org.opends.server.loggers.Debug.*; |
| | | import static org.opends.server.loggers.debug.DebugLogger.debugCought; |
| | | import static org.opends.server.loggers.debug.DebugLogger.debugEnabled; |
| | | import static org.opends.server.messages.MessageHandler.*; |
| | | import static org.opends.server.messages.ProtocolMessages.*; |
| | | import static org.opends.server.protocols.asn1.ASN1Constants.*; |
| | |
| | | */ |
| | | public class LDAPControl |
| | | { |
| | | /** |
| | | * The fully-qualified name of this class for debugging purposes. |
| | | */ |
| | | private static final String CLASS_NAME = |
| | | "org.opends.server.protocols.ldap.LDAPControl"; |
| | | |
| | | |
| | | |
| | | // The control wrapped by this LDAP control. |
| | |
| | | */ |
| | | public LDAPControl(Control control) |
| | | { |
| | | assert debugConstructor(CLASS_NAME, String.valueOf(control)); |
| | | |
| | | this.control = control; |
| | | } |
| | |
| | | */ |
| | | public LDAPControl(String oid) |
| | | { |
| | | assert debugConstructor(CLASS_NAME, String.valueOf(oid)); |
| | | |
| | | control = new Control(oid, false); |
| | | } |
| | |
| | | */ |
| | | public LDAPControl(String oid, boolean isCritical) |
| | | { |
| | | assert debugConstructor(CLASS_NAME, String.valueOf(oid), |
| | | String.valueOf(isCritical)); |
| | | |
| | | control = new Control(oid, isCritical); |
| | | } |
| | |
| | | */ |
| | | public LDAPControl(String oid, boolean isCritical, ASN1OctetString value) |
| | | { |
| | | assert debugEnter(CLASS_NAME, String.valueOf(oid), |
| | | String.valueOf(isCritical), String.valueOf(value)); |
| | | |
| | | control = new Control(oid, isCritical, value); |
| | | } |
| | |
| | | */ |
| | | public Control getControl() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getControl"); |
| | | |
| | | return control; |
| | | } |
| | |
| | | */ |
| | | public ASN1Element encode() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "encode"); |
| | | |
| | | ArrayList<ASN1Element> elements = new ArrayList<ASN1Element>(3); |
| | | elements.add(new ASN1OctetString(control.getOID())); |
| | |
| | | */ |
| | | public static ASN1Element encodeControls(ArrayList<LDAPControl> controls) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "encodeControls", String.valueOf(controls)); |
| | | |
| | | ArrayList<ASN1Element> elements = |
| | | new ArrayList<ASN1Element>(controls.size()); |
| | |
| | | public static LDAPControl decode(ASN1Element element) |
| | | throws LDAPException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "decode", String.valueOf(element)); |
| | | |
| | | if (element == null) |
| | | { |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "decode", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_SEQUENCE; |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_SEQUENCE; |
| | | String message = getMessage(msgID, String.valueOf(e)); |
| | | throw new LDAPException(PROTOCOL_ERROR, msgID, message, e); |
| | | } |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "decode", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_OID; |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_OID; |
| | | String message = getMessage(msgID, String.valueOf(e)); |
| | | throw new LDAPException(PROTOCOL_ERROR, msgID, message, e); |
| | | } |
| | |
| | | } |
| | | catch (Exception e2) |
| | | { |
| | | assert debugException(CLASS_NAME, "decode", e2); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e2); |
| | | } |
| | | |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_CRITICALITY; |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_CRITICALITY; |
| | | String message = getMessage(msgID, String.valueOf(e)); |
| | | throw new LDAPException(PROTOCOL_ERROR, msgID, message, e2); |
| | | } |
| | |
| | | } |
| | | catch (Exception e2) |
| | | { |
| | | assert debugException(CLASS_NAME, "decode", e2); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e2); |
| | | } |
| | | |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_VALUE; |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_VALUE; |
| | | String message = getMessage(msgID, String.valueOf(e)); |
| | | throw new LDAPException(PROTOCOL_ERROR, msgID, message, e2); |
| | | } |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "decode", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_CRITICALITY; |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_CRITICALITY; |
| | | String message = getMessage(msgID, String.valueOf(e)); |
| | | throw new LDAPException(PROTOCOL_ERROR, msgID, message, e); |
| | | } |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "decode", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_VALUE; |
| | | int msgID = MSGID_LDAP_CONTROL_DECODE_VALUE; |
| | | String message = getMessage(msgID, String.valueOf(e)); |
| | | throw new LDAPException(PROTOCOL_ERROR, msgID, message, e); |
| | | } |
| | |
| | | public static ArrayList<LDAPControl> decodeControls(ASN1Element element) |
| | | throws LDAPException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "decodeControls", String.valueOf(element)); |
| | | |
| | | if (element == null) |
| | | { |
| | |
| | | */ |
| | | public String getOID() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getOID"); |
| | | |
| | | return control.getOID(); |
| | | } |
| | |
| | | */ |
| | | public boolean isCritical() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "isCritical"); |
| | | |
| | | return control.isCritical(); |
| | | } |
| | |
| | | */ |
| | | public ASN1OctetString getValue() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getValue"); |
| | | |
| | | return control.getValue(); |
| | | } |
| | |
| | | */ |
| | | public String toString() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toString"); |
| | | |
| | | StringBuilder buffer = new StringBuilder(); |
| | | toString(buffer); |
| | |
| | | */ |
| | | public void toString(StringBuilder buffer) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder"); |
| | | |
| | | buffer.append("LDAPControl(oid="); |
| | | buffer.append(control.getOID()); |
| | |
| | | */ |
| | | public void toString(StringBuilder buffer, int indent) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "toString", "java.lang.StringBuilder", |
| | | String.valueOf(indent)); |
| | | |
| | | StringBuilder indentBuf = new StringBuilder(indent); |
| | | for (int i=0 ; i < indent; i++) |