Class ExtAttrDynMapper

  • All Implemented Interfaces:
    com.netscape.certsrv.dbs.IDBAttrMapper, com.netscape.certsrv.dbs.IDBDynAttrMapper

    public class ExtAttrDynMapper
    extends java.lang.Object
    implements com.netscape.certsrv.dbs.IDBDynAttrMapper
    Maps dynamic data for the extData- prefix to and from the extData Hashtable in RequestRecord. The data in RequestRecord is stored in a Hashtable. It comes in two forms: 1. String key1 => String value1 String key2 => String value2 This is stored in LDAP as: extData-key1 => value1 extData-key2 => value2 2. String key => Hashtable value where value stores: String key2 => String value2 String key3 => String value3 This is stored in LDAP as: extData-key;key2 => value2 extData-key;key3 => value3 These can be mixed, but each top-level key can only be associated with a String value or a Hashtable value.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected static java.lang.String extAttrPrefix  
      static org.slf4j.Logger logger  
      protected static java.util.Vector<java.lang.String> mAttrs  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String decodeKey​(java.lang.String key)
      Decodes extdata encoded keys.
      java.lang.String encodeKey​(java.lang.String key)
      Encoded extdata keys for storage in LDAP.
      java.util.Enumeration<java.lang.String> getSupportedLDAPAttributeNames()
      Retrieves a list of LDAP attributes that are used in the mapper.
      protected boolean isAlphaNum​(char in)  
      void mapLDAPAttributeSetToObject​(netscape.ldap.LDAPAttributeSet attrs, java.lang.String name, com.netscape.certsrv.dbs.IDBObj parent)
      Maps LDAP attributes into object, and puts the object into 'parent'.
      void mapObjectToLDAPAttributeSet​(com.netscape.certsrv.dbs.IDBObj parent, java.lang.String name, java.lang.Object obj, netscape.ldap.LDAPAttributeSet attrs)
      Maps object attribute into LDAP attributes.
      java.lang.String mapSearchFilter​(java.lang.String name, java.lang.String op, java.lang.String value)
      Maps search filters into LDAP search filter.
      boolean supportsLDAPAttributeName​(java.lang.String attrName)
      Returns true if the LDAP attribute can be mapped by this dynamic mapper.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • logger

        public static org.slf4j.Logger logger
      • mAttrs

        protected static final java.util.Vector<java.lang.String> mAttrs
    • Constructor Detail

      • ExtAttrDynMapper

        public ExtAttrDynMapper()
    • Method Detail

      • supportsLDAPAttributeName

        public boolean supportsLDAPAttributeName​(java.lang.String attrName)
        Description copied from interface: com.netscape.certsrv.dbs.IDBDynAttrMapper
        Returns true if the LDAP attribute can be mapped by this dynamic mapper.
        Specified by:
        supportsLDAPAttributeName in interface com.netscape.certsrv.dbs.IDBDynAttrMapper
        Parameters:
        attrName - LDAP attribute name to check
        Returns:
        a list of supported attribute names
      • getSupportedLDAPAttributeNames

        public java.util.Enumeration<java.lang.String> getSupportedLDAPAttributeNames()
        Description copied from interface: com.netscape.certsrv.dbs.IDBAttrMapper
        Retrieves a list of LDAP attributes that are used in the mapper. By having this, the framework can provide search on selective attributes.
        Specified by:
        getSupportedLDAPAttributeNames in interface com.netscape.certsrv.dbs.IDBAttrMapper
        Returns:
        a list of supported attribute names
      • decodeKey

        public java.lang.String decodeKey​(java.lang.String key)
        Decodes extdata encoded keys. -- followed by a 4 digit hexadecimal string is decoded to the character representing the hex string. The routine is written to be highly efficient. It only allocates the StringBuffer if needed and copies the pieces in large chunks.
        Parameters:
        key - The key to decode
        Returns:
        The decoded key.
      • encodeKey

        public java.lang.String encodeKey​(java.lang.String key)
        Encoded extdata keys for storage in LDAP. The rules for encoding are trickier than decoding. We want to allow '-' by itself to be stored in the database (for the common case of keys like 'Foo-Bar'. Therefore we are using '--' as the encoding character. The rules are: 1) All characters [^-a-zA-Z0-9] are encoded as --XXXX where XXXX is the hex representation of the digit. 2) [a-zA-Z0-9] are always passed through unencoded 3) [-] is passed through as long as it is preceded and followed by [a-zA-Z0-9] (or if it's at the beginning/end of the string) 4) If [-] is preceded or followed by [^a-zA-Z0-9] then the - as well as all following [^a-zA-Z0-9] characters are encoded as --XXXX. This routine tries to be as efficient as possible with StringBuffer and large copies. However, the encoding unfortunately requires several objects to be allocated.
        Parameters:
        key - The key to encode
        Returns:
        The encoded key
      • isAlphaNum

        protected boolean isAlphaNum​(char in)
      • mapObjectToLDAPAttributeSet

        public void mapObjectToLDAPAttributeSet​(com.netscape.certsrv.dbs.IDBObj parent,
                                                java.lang.String name,
                                                java.lang.Object obj,
                                                netscape.ldap.LDAPAttributeSet attrs)
                                         throws EBaseException
        Description copied from interface: com.netscape.certsrv.dbs.IDBAttrMapper
        Maps object attribute into LDAP attributes.
        Specified by:
        mapObjectToLDAPAttributeSet in interface com.netscape.certsrv.dbs.IDBAttrMapper
        Parameters:
        parent - parent object where the object comes from
        name - name of db attribute
        obj - object itself
        attrs - LDAP attribute set where the result should be stored
        Throws:
        EBaseException - failed to map object
      • mapLDAPAttributeSetToObject

        public void mapLDAPAttributeSetToObject​(netscape.ldap.LDAPAttributeSet attrs,
                                                java.lang.String name,
                                                com.netscape.certsrv.dbs.IDBObj parent)
                                         throws EBaseException
        Description copied from interface: com.netscape.certsrv.dbs.IDBAttrMapper
        Maps LDAP attributes into object, and puts the object into 'parent'.
        Specified by:
        mapLDAPAttributeSetToObject in interface com.netscape.certsrv.dbs.IDBAttrMapper
        Parameters:
        attrs - LDAP attribute set
        name - name of db attribute to be processed
        parent - parent object where the object should be added
        Throws:
        EBaseException - failed to map object
      • mapSearchFilter

        public java.lang.String mapSearchFilter​(java.lang.String name,
                                                java.lang.String op,
                                                java.lang.String value)
                                         throws EBaseException
        Description copied from interface: com.netscape.certsrv.dbs.IDBAttrMapper
        Maps search filters into LDAP search filter.
        Specified by:
        mapSearchFilter in interface com.netscape.certsrv.dbs.IDBAttrMapper
        Parameters:
        name - name of db attribute
        op - filte operation (i.e. "=", ">=")
        value - attribute value
        Throws:
        EBaseException - failed to map filter