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

У меня есть высокопроизводительное приложение, которое работает с 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 показывает несколько вариантов, но без четкого способа выбора между ними. Что бы вы посоветовали в качестве хорошей библиотеки для этой задачи?

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

1 Ответ

1 голос
/ 17 июня 2010

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

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

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

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

...