Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FilterInvocation Support Default Methods on HttpServletRequest #8566

Closed
rwinch opened this issue May 20, 2020 · 0 comments
Closed

FilterInvocation Support Default Methods on HttpServletRequest #8566

rwinch opened this issue May 20, 2020 · 0 comments
Assignees
Labels
in: web An issue in web modules (web, webmvc) type: enhancement A general enhancement
Milestone

Comments

@rwinch
Copy link
Member

rwinch commented May 20, 2020

FilterInvocation creates a dummy HttpServletRequest to allow creating dummy HttpServletRequest instances. The DummyRequest should support invoking default methods to support spring-projects/spring-framework#25100

Without these changes we will see stack traces that look similar to:

java.lang.UnsupportedOperationException: public default javax.servlet.http.HttpServletMapping javax.servlet.http.HttpServletRequest.getHttpServletMapping() is not supported

	at org.springframework.security.web.UnsupportedOperationExceptionInvocationHandler.invoke(FilterInvocation.java:244)
	at com.sun.proxy.$Proxy36.getHttpServletMapping(Unknown Source)
	at javax.servlet.http.HttpServletRequestWrapper.getHttpServletMapping(HttpServletRequestWrapper.java:123)
	at javax.servlet.http.HttpServletRequestWrapper.getHttpServletMapping(HttpServletRequestWrapper.java:123)
	at org.springframework.web.util.UrlPathHelper.skipServletPathDetermination(UrlPathHelper.java:209)
	at org.springframework.web.util.UrlPathHelper.getLookupPathForRequest(UrlPathHelper.java:194)
	at org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher$DefaultMatcher.matches(MvcRequestMatcher.java:158)
	at org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher.matches(MvcRequestMatcher.java:73)
	at org.springframework.security.web.DefaultSecurityFilterChain.matches(DefaultSecurityFilterChain.java:57)
	at org.springframework.security.web.FilterChainProxy.getFilters(FilterChainProxy.java:234)
	at org.springframework.security.web.FilterChainProxy.getFilters(FilterChainProxy.java:249)
	at org.springframework.security.config.annotation.web.configurers.HttpSecurityRequestMatchersTests.mvcMatcherGetFiltersNoUnsupportedMethodExceptionFromDummyRequest(HttpSecurityRequestMatchersTests.java:105)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
@rwinch rwinch added in: web An issue in web modules (web, webmvc) type: enhancement A general enhancement labels May 20, 2020
@rwinch rwinch added this to the 5.4.0-M2 milestone May 20, 2020
@rwinch rwinch self-assigned this May 20, 2020
@rwinch rwinch closed this as completed in dc514b3 May 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in: web An issue in web modules (web, webmvc) type: enhancement A general enhancement
Projects
None yet
Development

No branches or pull requests

1 participant