[ 
https://issues.apache.org/jira/browse/SLING-6516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16014356#comment-16014356
 ] 

Karolis Mackevicius edited comment on SLING-6516 at 5/17/17 6:49 PM:
---------------------------------------------------------------------

https://github.com/apache/sling/pull/231 
Pull Request Implementation details.
|| Property/Resource in Resource-based validation model||       Equivalent in 
Annotation-based validation model || Example ||
| validatedResourceType | resourceType element in @Model annotation, 
https://sling.apache.org/documentation/bundles/models.html#associating-a-model-class-with-a-resource-type-since-130|
 @Model(resourceType="sling/any/resourceType") |
| applicablePaths       | dedicated annotation on Sling Model class, 
@ValidationPaths paths property  | @ValidationPaths(paths={"/content"\}) |
| properties\<propertyName>     | property name would be derived from either 
@ValueMapValue name attribute or the field's name.| 
@ValueMapValue(name="propertyName") |
| properties\<propertyName>\optional | value would be derived either from 
@ValueMapValue injectionStrategy property or from @Model class 
defaultInjectionStrategy property. | @ValueMapValue(injectionStrategy = 
InjectionStrategy.OPTIONAL) or @Model(defaultInjectionStrategy = 
DefaultInjectionStrategy.REQUIRED) |
| properties\<propertyName>\propertyMultiple    | value would be derived from 
the field's type. If field is an Array or Collection - multiple = true | 
String[] properties or List<String> properties |
| properties\<propertyName>\nameRegex | value would be derived from @Validate 
regex property. | @Validate(regex="*") |
| properties\<propertyName>\validators\<validatorName> |        validator name 
would be derived from @Validate validatorId property, where ID is a registered 
Validator component with same ID name. | 
@Validate(validatorId="org.apache.sling.validation.core.RegexValidator") |
| properties\<propertyName>\validators\<validatorName>\validatorArguments |     
validator arguments would be derived from @Validate properties string array, 
where key and value must be split with equals sign "=" | @Validate(validatorId 
= "MinimumLengthValidator", properties= \{"minLength=10"\}) |
| properties\<propertyName>\validators\<validatorName>\severity |       
severity would be derived from @Validate severity property, which by default is 
0 | @Validate(severity=0)
| children\<resourceName> |     children would be derived from @ChildResource 
annotated fields, which are registered Sling Models | @ChildResource ChildModel 
model; |
| children\<resourceName>\nameRegex | child name would be derived either from 
@ChildResource name property or from fields name | @ChildResource(name="child") 
ChildModel model; |
| children\<resourceName>\optional |    optional would be derived either from 
@ChildResource injection strategy or from @Model class defaultInjectionStrategy 
property.  | @ChildResource(injectionStrategy = InjectionStrategy.OPTIONAL) or 
@Model(defaultInjectionStrategy = DefaultInjectionStrategy.REQUIRED) |
| children\<resourceName>\properties |  child properties would be derived from 
injected Sling Model @ValueMapValue fields |  |


was (Author: kama):
Pull Request Implementation details.
|| Property/Resource in Resource-based validation model||       Equivalent in 
Annotation-based validation model || Example ||
| validatedResourceType | resourceType element in @Model annotation, 
https://sling.apache.org/documentation/bundles/models.html#associating-a-model-class-with-a-resource-type-since-130|
 @Model(resourceType="sling/any/resourceType") |
| applicablePaths       | dedicated annotation on Sling Model class, 
@ValidationPaths paths property  | @ValidationPaths(paths={"/content"\}) |
| properties\<propertyName>     | property name would be derived from either 
@ValueMapValue name attribute or the field's name.| 
@ValueMapValue(name="propertyName") |
| properties\<propertyName>\optional | value would be derived either from 
@ValueMapValue injectionStrategy property or from @Model class 
defaultInjectionStrategy property. | @ValueMapValue(injectionStrategy = 
InjectionStrategy.OPTIONAL) or @Model(defaultInjectionStrategy = 
DefaultInjectionStrategy.REQUIRED) |
| properties\<propertyName>\propertyMultiple    | value would be derived from 
the field's type. If field is an Array or Collection - multiple = true | 
String[] properties or List<String> properties |
| properties\<propertyName>\nameRegex | value would be derived from @Validate 
regex property. | @Validate(regex="*") |
| properties\<propertyName>\validators\<validatorName> |        validator name 
would be derived from @Validate validatorId property, where ID is a registered 
Validator component with same ID name. | 
@Validate(validatorId="org.apache.sling.validation.core.RegexValidator") |
| properties\<propertyName>\validators\<validatorName>\validatorArguments |     
validator arguments would be derived from @Validate properties string array, 
where key and value must be split with equals sign "=" | @Validate(validatorId 
= "MinimumLengthValidator", properties= \{"minLength=10"\}) |
| properties\<propertyName>\validators\<validatorName>\severity |       
severity would be derived from @Validate severity property, which by default is 
0 | @Validate(severity=0)
| children\<resourceName> |     children would be derived from @ChildResource 
annotated fields, which are registered Sling Models | @ChildResource ChildModel 
model; |
| children\<resourceName>\nameRegex | child name would be derived either from 
@ChildResource name property or from fields name | @ChildResource(name="child") 
ChildModel model; |
| children\<resourceName>\optional |    optional would be derived either from 
@ChildResource injection strategy or from @Model class defaultInjectionStrategy 
property.  | @ChildResource(injectionStrategy = InjectionStrategy.OPTIONAL) or 
@Model(defaultInjectionStrategy = DefaultInjectionStrategy.REQUIRED) |
| children\<resourceName>\properties |  child properties would be derived from 
injected Sling Model @ValueMapValue fields |  |

> ValidationModelProvider evaluating additional annotations on a Sling Model 
> bound to a specific resource type
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: SLING-6516
>                 URL: https://issues.apache.org/jira/browse/SLING-6516
>             Project: Sling
>          Issue Type: Improvement
>          Components: Validation
>            Reporter: Konrad Windszus
>
> Instead of providing a validation model through a dedicated sling resource 
> with specific properties, it is often more handy to rely on annotations. A 
> new ValidationModelProvider should support additional annotations on 
> SlingModels defining a validation model for the underlying resource type of 
> that SlingModel.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to