Skip to content

Commit

Permalink
Attachments need CommonsResolver, Vaadin needs StandardResolver. Swit…
Browse files Browse the repository at this point in the history
…ch between both. Fixes #246
  • Loading branch information
F43nd1r committed Apr 23, 2021
1 parent 2b4b867 commit 043cade
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@ import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.core.Ordered
import org.springframework.core.annotation.Order
import org.springframework.web.multipart.MultipartHttpServletRequest
import org.springframework.web.multipart.MultipartResolver
import org.springframework.web.multipart.commons.CommonsMultipartResolver
import org.springframework.web.multipart.support.StandardServletMultipartResolver
import javax.servlet.Filter
import javax.servlet.http.HttpServletRequest

@Configuration
class RestConfiguration {
Expand All @@ -16,5 +19,23 @@ class RestConfiguration {
fun gzipFilter(): Filter = CompressingFilter()

@Bean
fun multipartResolver(): MultipartResolver = CommonsMultipartResolver()
fun multipartResolver(): MultipartResolver = SwitchingMultipartResolver()
}

class SwitchingMultipartResolver : MultipartResolver {
private val commonsResolver = CommonsMultipartResolver()
private val standardResolver = StandardServletMultipartResolver()
override fun isMultipart(request: HttpServletRequest): Boolean {
return request.resolver().isMultipart(request)
}

override fun resolveMultipart(request: HttpServletRequest): MultipartHttpServletRequest {
return request.resolver().resolveMultipart(request)
}

override fun cleanupMultipart(request: MultipartHttpServletRequest) {
return request.resolver().cleanupMultipart(request)
}

private fun HttpServletRequest.resolver() = if (this.servletPath.startsWith("/VAADIN")) standardResolver else commonsResolver
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,6 @@ object SecurityUtils {
@JvmStatic
fun isFrameworkInternalRequest(request: HttpServletRequest): Boolean {
val parameterValue = request.getParameter(ApplicationConstants.REQUEST_TYPE_PARAMETER)
return (parameterValue != null && RequestType.values().any { it.getIdentifier() == parameterValue })
return (parameterValue != null && RequestType.values().any { it.identifier == parameterValue })
}
}

0 comments on commit 043cade

Please sign in to comment.