rewrite-spring icon indicating copy to clipboard operation
rewrite-spring copied to clipboard

`UpdateRequestCache` fails to switch from the `HttpSessionRequestCache` to the `NullRequestCache`

Open tkupka opened this issue 10 months ago • 5 comments

What version of OpenRewrite are you using?

I am using

  • OpenRewrite v2.8.0
  • Gradle plugin v6.10.1

How are you running OpenRewrite?

I'm using Gradle (7.6.4) to run openrewrite. I have multi-module project and when I run gradle :module-XYZ:rewriteDryRun it fails with exception - see bellow

Gradle configuration

//only rewrite relevant  plugins/dependencies in the snippet
plugins {
	id 'java-library'
	id 'org.openrewrite.rewrite' version '6.10.1'
}

dependencies {
	rewrite platform('org.openrewrite.recipe:rewrite-recipe-bom:2.8.0')
	rewrite("org.openrewrite.recipe:rewrite-spring:5.7.0")
	
}

rewrite {
	activeRecipe(
		"org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_2",
		"org.openrewrite.java.spring.security6.UpgradeSpringSecurity_6_2"
	)
}

What is the smallest, simplest way to reproduce the problem?

import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.authentication.logout.ForwardLogoutSuccessHandler;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.security.web.savedrequest.HttpSessionRequestCache;

public class Test {

	void failing(HttpSecurity http) throws Exception {
		http.requestCache(customizer -> {
			customizer.requestCache(new HttpSessionRequestCache());
		});
	}
	
	void passing(HttpSecurity http) throws Exception {
		http.logout(logoutConfigurer -> {
			LogoutSuccessHandler logoutSuccessHandler = logoutConfigurer.getLogoutSuccessHandler();
			logoutConfigurer.logoutSuccessHandler(new ForwardLogoutSuccessHandler("http://nothing"));
		});
	}

}

What is the full stack trace of any errors you encountered?

> java.lang.RuntimeException: Error while visiting ..\..\Test.java: java.lang.IllegalStateException: Unable to construct Java17Parser.
    org.openrewrite.java.Java17Parser$Builder.build(Java17Parser.java:96)
    org.openrewrite.java.Java17Parser$Builder.build(Java17Parser.java:63)
    org.openrewrite.java.internal.template.JavaTemplateParser.compileTemplate(JavaTemplateParser.java:257)
    org.openrewrite.java.internal.template.JavaTemplateParser.lambda$parseBlockStatements$9(JavaTemplateParser.java:176)
    org.openrewrite.java.internal.template.JavaTemplateParser.lambda$cacheIfContextFree$14(JavaTemplateParser.java:287)
    org.openrewrite.java.internal.template.JavaTemplateParser.cache(JavaTemplateParser.java:308)
    org.openrewrite.java.internal.template.JavaTemplateParser.cacheIfContextFree(JavaTemplateParser.java:287)
    org.openrewrite.java.internal.template.JavaTemplateParser.parseBlockStatements(JavaTemplateParser.java:171)
    org.openrewrite.java.internal.template.JavaTemplateJavaExtension$1.maybeReplaceStatement(JavaTemplateJavaExtension.java:469)
    org.openrewrite.java.internal.template.JavaTemplateJavaExtension$1.visitNewClass(JavaTemplateJavaExtension.java:448)
    org.openrewrite.java.internal.template.JavaTemplateJavaExtension$1.visitNewClass(JavaTemplateJavaExtension.java:56)
    org.openrewrite.java.tree.J$NewClass.acceptJava(J.java:4449)
    org.openrewrite.java.tree.J.accept(J.java:59)
    org.openrewrite.TreeVisitor.visit(TreeVisitor.java:283)
    org.openrewrite.TreeVisitor.visit(TreeVisitor.java:184)
    org.openrewrite.java.JavaTemplate.apply(JavaTemplate.java:101)
    ...

tkupka avatar Mar 26 '24 20:03 tkupka