aofall commented on PR #13923:
URL: https://github.com/apache/dubbo/pull/13923#issuecomment-2051528745

   > A more conscise way is to use 
`org.apache.dubbo.common.extension.Activate#onClass` and create two filter for 
`javax` and `jakarta`
   
   @AlbumenJ I try to use `Activate#onClass` on two filter class for `javax` 
and `jakarta`, but found another problem.
   
   The Validation was mark the `jvalidation` by default extension by the 
`@SPI("jvalidation")` annotation on class. 
   
   
https://github.com/apache/dubbo/blob/6b3f54383f4b6102215e33ea879a389dff0fd1eb/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/Validation.java#L28
   
   If use `@Activate(onClass = "javax.validation.Validation")` on the 
`org.apache.dubbo.validation.support.jvalidation.JValidation` class, this 
extension will not loaded, because the declare default extension it will throw 
the IllegalStateException(No such extension jvalidation....) in 
`org.apache.dubbo.common.extension.ExtensionLoader#createExtension`
   
   
https://github.com/apache/dubbo/blob/6b3f54383f4b6102215e33ea879a389dff0fd1eb/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java#L773
   
   If remove the default extension declared in 
`org.apache.dubbo.validation.Validation`, 
`org.apache.dubbo.validation.Validation#getValidator` will attempt to load the 
extension with the corresponding name from the relevant configurations like 
`dubbo.consumer.validation` and `dubbo.provider.validation` , but the official 
document of 
[provider](https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/properties/#provider)
 and 
[consumer](https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/properties/#consumer)
  defines the parameter type of `validation` as Boolean, it's unexpect for 
[dubbo-samples](https://github.com/apache/dubbo-samples/blob/f82f23f3fbb4a47eaeba8b7eecfef85318adf6db/2-advanced/dubbo-samples-validation/src/main/resources/application.yml#L27)
   
   As long as fill in any characters into `dubbo.provider/consumer.validation` 
configuration, verification will be enabled and loaded the default extension 
`jvalidation`


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@dubbo.apache.org
For additional commands, e-mail: notifications-h...@dubbo.apache.org

Reply via email to