Как правильно использовать JavaTemplate для цепочки дальнейших вызовов методов?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно использовать JavaTemplate для цепочки дальнейших вызовов методов?

Сообщение Anonymous »

Я пытаюсь использовать org.openrewrite.java.JavaTemplate, чтобы заменить вызов метода PermitAll цепочкой дальнейших вызовов метода. Вот моя реализация метода visitMethodInvoction в JavaIsoVisitor:

Код: Выделить всё

@Override
public J.MethodInvocation visitMethodInvocation(final J.MethodInvocation method, final ExecutionContext ctx) {
if (method.getSimpleName().equals("permitAll") && isExpressionUrlAuthorizationConfigurer(method.getSelect())) {
final JavaTemplate template = JavaTemplate.builder(
"permitAll().and().anonymous(Customizer.withDefaults()).httpBasic(AbstractHttpConfigurer::disable)")
.imports(
"org.springframework.security.config.Customizer",
"org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer")
.build();
return template.apply(getCursor(), method.getCoordinates().replaceMethod());
}
return super.visitMethodInvocation(method, ctx);
}
Когда я вызываю template.apply(), происходит сбой со следующим исключением:

Код: Выделить всё

java.lang.IllegalStateException: Expected to find enclosing SourceFile
at org.openrewrite.Cursor.firstEnclosingOrThrow (Cursor.java:178)
at org.openrewrite.Tree.printer (Tree.java:73)
at org.openrewrite.Tree.print(Tree.java:81)
at org.openrewrite.Tree.print(Tree.java:77)
at org.openrewrite.java.internal.template.JavaTemplateParser.parseMethod (JavaTemplateParser.java:187)
Я могу воспроизвести это исключение, вызвав метод.getSelect().print(getCursor()); непосредственно в методе, переданном методу посетителя.
Вопросы:
  • Что я делаю неправильно при настройке или применении JavaTemplate ?
  • Может ли это быть ошибка (например, в org.openrewrite.java.JavaTemplate) или в том, как создается J.MethodInvoction (то же самое происходит в модульном тесте и при применении «по-настоящему» — с указанием этого метода нет исходного файла).
Будем очень признательны за любые идеи и предложения!

Подробнее здесь: https://stackoverflow.com/questions/793 ... nvocations
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»