Что такое базовый пакет Java с открытым исходным кодом для фильтрации/сопоставления URL-адресов?

У меня есть высокопроизводительное приложение, которое работает с URL-адресами. Для каждого URL-адреса необходимо получить соответствующие настройки из предопределенного пула. Каждый объект настроек связан с шаблоном URL-адреса, который указывает, какие URL-адреса должны использовать эти настройки. Правила соответствия следующие:

  1. Шаблон соответствия "google.com" должен соответствовать всем URL-адресам, указывающим на домен google (таким образом, карты maps.google.com и www.google.com/match совпадают).
  2. "*.google.com" должен соответствовать всем URL-адресам, указывающим на поддомен google.com (таким образом, maps.google.com соответствует, а google.com и www.google.com - нет).
  3. «maps.google.com» должен соответствовать всем URL-адресам, указывающим на этот конкретный поддомен.

Помимо приведенных выше правил, каждое правило соответствия может содержать путь, а это означает, что часть пути URL-адреса должна начинаться с пути правила соответствия. Итак: «*.google.com/maps» соответствует «maps.google.com/maps», но не «maps.google.com/advanced».

Как вы можете видеть, приведенные выше правила перекрываются. В случае, если существуют два правила, соответствующие одному и тому же URL-адресу, должно применяться наиболее конкретное. Приведенный выше список ранжирован от наименее конкретного к наиболее конкретному.

Это кажется настолько стандартной проблемой, что я надеялся использовать готовую библиотеку, а не программировать себя. Google показывает несколько вариантов, но без четкого способа выбора между ними. Что бы вы порекомендовали в качестве хорошей библиотеки для этой задачи?

Спасибо, Боаз


person Boaz    schedule 10.06.2010    source источник
comment
Взгляните на этот предыдущий вопрос: stackoverflow.com/questions/2230676/   -  person Tendayi Mawushe    schedule 10.06.2010


Ответы (1)


Я не думаю, что вам нужна конкретная библиотека для решения этой проблемы; в стандартном API Java есть все, что вам нужно для написания кода без особых усилий.

Взгляните на java.util.regex.Pattern и разработайте регулярные выражения, необходимые для соответствия каждому из ваших правил. Вы также можете использовать java.net.URL для анализа различных полей из URL-адреса.

Вы уже сказали, что у вас есть схема приоритетов для обработки сценариев, в которых несколько шаблонов соответствуют URL-адресу, так что это должно быть последней частью этой головоломки.

Это выглядит довольно простой задачей.

person Joel Hoff    schedule 17.06.2010