Class RdapEntitySearchAction

All Implemented Interfaces:
Runnable

public class RdapEntitySearchAction extends RdapSearchActionBase
RDAP (new WHOIS) action for entity (contact and registrar) search requests.

All commands and responses conform to the RDAP spec as defined in RFCs 7480 through 7485.

The RDAP specification lumps contacts and registrars together and calls them "entities", which is confusing for us, because "entity" means something else in SQL. But here, when we use the term, it means either a contact or registrar. When searching for entities, we always start by returning all matching contacts, and after that all matching registrars.

There are two ways to search for entities: by full name (for contacts, the search name, for registrars, the registrar name) or by handle (for contacts, the ROID, for registrars, the IANA number). The ICANN operational profile document specifies this meaning for handle searches.

Cursors are complicated by the fact that we are essentially doing two independent searches: one for contacts, and one for registrars. To accommodate this, the cursor has a prefix indicating the type of the last returned item. If the last item was a contact, we return c:{value}, where the value is either the search name or the ROID. If the last item was a registrar, we return r:{value}, where the value is either the registrar name or the IANA number. If we get a c: cursor, we use it to weed out contacts, and fetch all registrars. If we get an r: cursor, we know that we can skip the contact search altogether (because we returned a registrar, and all registrars come after all contacts).

See Also:
  • Constructor Details

    • RdapEntitySearchAction

      @Inject public RdapEntitySearchAction()
  • Method Details

    • getSearchResponse

      public google.registry.rdap.RdapSearchResults.EntitySearchResponse getSearchResponse(boolean isHeadRequest)
      Parses the parameters and calls the appropriate search function.
      Specified by:
      getSearchResponse in class RdapSearchActionBase