Skip to content

Commit

Permalink
@ValidatedFor's value() is now a String[] instead of Class[]
Browse files Browse the repository at this point in the history
During annotation processing, target Class will generally not be available
Thus we need to fallback to a less statically typed solution
  • Loading branch information
fcamblor committed Dec 26, 2014
1 parent 4afdbce commit a3d9a09
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ private void buildResourceMethodParams(ResourceMethodAnnotation annotation, Reso

String[] validationGroups = new String[0];
if(validatedFor != null) {
validationGroups = Collections2.transform(Arrays.asList(validatedFor.value()), FQN_EXTRACTOR).toArray(new String[0]);
validationGroups = validatedFor.value();
}

resourceMethod.parameters.add(new ResourceMethodParameter(
Expand Down
3 changes: 2 additions & 1 deletion restx-core/src/main/java/restx/validation/ValidatedFor.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ValidatedFor {
Class[] value();
// Validation group FQN here
String[] value();
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
* @author fcamblor
*/
public interface FormValidations {
public static final String DefaultFQN = "javax.validation.groups.Default";
public static final String CreateFQN = "restx.validation.stereotypes.FormValidations.Create";
public static interface Create extends Default{}
public static final String UpdateFQN = "restx.validation.stereotypes.FormValidations.Update";
public static interface Update extends Default{}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public class ValidationResource {
private static final Logger LOG = LoggerFactory.getLogger(ValidationResource.class);

public static interface MyCustomValidationGroup{}
public static final String MyCustomValidationGroupFQN = "samplest.validation.ValidationResource.MyCustomValidationGroup";

@PermitAll
@POST("/valid/pojos")
Expand All @@ -29,13 +30,13 @@ public void createPOJOWithoutAnnotation(POJO myPojo) {

@PermitAll
@POST("/valid/pojos2")
public void createPOJOWithAnnotation(@ValidatedFor(FormValidations.Create.class) POJO myPojo) {
public void createPOJOWithAnnotation(@ValidatedFor(FormValidations.CreateFQN) POJO myPojo) {
LOG.info("Pojo {} {} created !", myPojo.getName(), myPojo.getSubPOJO().getLabel());
}

@PermitAll
@PUT("/valid/pojos/{id}")
public void createPOJOWithoutAnnotation(Long id, @ValidatedFor({MyCustomValidationGroup.class, FormValidations.Update.class}) POJO myPojo) {
public void createPOJOWithoutAnnotation(Long id, @ValidatedFor({MyCustomValidationGroupFQN, FormValidations.UpdateFQN}) POJO myPojo) {
LOG.info("Pojo {} {} updated !", myPojo.getName(), myPojo.getSubPOJO().getLabel());
}
}

0 comments on commit a3d9a09

Please sign in to comment.