/** * Retorna o registro de domínio de um determinado host. * * @param id a identificação do dono que deve ser retornado. * @return o registro de domínio de um determinado host. * @throws ProcessException se houver falha no processamento. */ public static Owner getOwner(String id) throws ProcessException { String key = normalizeID(id); // Busca eficiente O(1). if (OWNER_MAP.containsKey(key)) { // Owner encontrado. Owner owner = OWNER_MAP.get(key); owner.queries++; if (owner.isRegistryExpired()) { // Registro desatualizado. // Atualizando campos do registro. if (owner.refresh()) { // Owner real do resultado WHOIS bate com o registro. return owner; } else { // Owner real do resultado WHOIS não bate com o registro. removeOwner(owner); // Segue para nova consulta. } } else { // Registro atualizado. return owner; } } // Não encontrou o dominio em cache. // Selecionando servidor da pesquisa WHOIS. String server = Server.WHOIS_BR; // Realizando a consulta no WHOIS. Owner owner = new Owner(key); owner.server = server; // Temporário até final de transição. // Adicinando registro em cache. addOwner(owner); return owner; }
/** * Atualiza o registro de domínio de um determinado host. * * @param id a identificação do dono que deve ser atualizado. * @throws ProcessException se houver falha no processamento. */ public static void refreshOwner(String id) throws ProcessException { String key = normalizeID(id); // Busca eficiente O(1). if (OWNER_MAP.containsKey(key)) { // Owner encontrado. Owner owner = OWNER_MAP.get(key); // Atualizando campos do registro. if (!owner.refresh()) { // Owner real do resultado WHOIS não bate com o registro. // Apagando registro de dono do cache. removeOwner(owner); // Segue para nova consulta. } } // Não encontrou o dono em cache. // Selecionando servidor da pesquisa WHOIS. String server = Server.WHOIS_BR; // Owner existente. // Realizando a consulta no WHOIS. Owner owner = new Owner(key); owner.server = Server.WHOIS_BR; // Temporário até final de transição. // Adicinando registro em cache. addOwner(owner); }
/** * Remove o registro de domínio do cache. * * @param owner o dono que deve ser removido. */ private static synchronized void removeOwner(Owner owner) { if (OWNER_MAP.remove(owner.getOwnerID()) != null) { // Atualiza flag de atualização. OWNER_CHANGED = true; } }
/** * Adciiona o registro de domínio no cache. * * @param owner o owner que deve ser adicionado. */ private static synchronized void addOwner(Owner owner) { OWNER_MAP.put(owner.getOwnerID(), owner); // Atualiza flag de atualização. OWNER_CHANGED = true; }