Я пытаюсь нормализовать URI в приложении, используя AspectJ. Я хотел бы перехватить каждый вызов метода, передаваемый в параметре java.net.URI.
Простой pointcut для этого будет выглядеть примерно так:
public pointcut uriMethod (URI uri): вызов (* * (..)) && args (uri);
Однако, похоже, это соответствует только сигнатурам метода только с одним аргументом (URI). Я могу изменить часть args на «args (uri, ..)», но это применимо только к методам с несколькими аргументами (потеря подписей с одним аргументом) и только если первый аргумент является URI.
Можно построить точечный разрез, чтобы охватить все случаи:
public void exampleMethod1 (URI uri);
public void exampleMethod2 (URI uri, String s);
public void exampleMethod3 (int i, URI uri);
public void exampleMethod4 (float f, URI uri, short s);
Бонусные баллы, если возможно захватить несколько URI с одним и тем же pointcut:
public void exampleMethod5 (URI uri1, URI uri2);
Я тоже открыт для альтернативных маршрутов. Возможно, мне нужно что-то, основанное на самом классе URI, а не на классах, в которые оно передается?