/** * Creates a new {@link ValidatorFactory} based on {@link #newConfiguration()} */ public static ValidatorFactory newValidatorFactory() { return newConfiguration().buildValidatorFactory(); }
/** * Creates a new {@link Validator} based on {@link #newConfiguration()} */ public static Validator newValidator() { return newConfiguration().buildValidatorFactory().getValidator(); }
@PostConstruct public void start() { if (factory == null) { this.factory = conf.buildValidatorFactory(); validator = factory.getValidator(); } }
@Provides @Singleton public ValidatorContext getValidatorContext(HibernateValidatorConfiguration configuration, Set<ConstraintMapping> constraintMappings) { constraintMappings.forEach(configuration::addMapping); return configuration.buildValidatorFactory() .usingContext(); }
@Bean public Validator validator() { ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class) .configure() .addProperty("hibernate.validator.fail_fast", "true") .buildValidatorFactory(); Validator validator = validatorFactory.getValidator(); return validator; } }
protected static Environment createEnvironment(final String name) { final Validator validator = Validation .byProvider(HibernateValidator.class) .configure() .addValidatedValueHandler(new OptionalValidatedValueUnwrapper()) .buildValidatorFactory() .getValidator(); return new Environment(name, Jackson.newObjectMapper(), validator, new MetricRegistry(), Thread.currentThread().getContextClassLoader()); }
@Test public void testWorkflowTaskTypeHTTPWithHttpParamMissing() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("HTTP"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(1, result.size()); List<String> validationErrors = new ArrayList<>(); result.forEach(e -> validationErrors.add(e.getMessage())); assertTrue(validationErrors.contains("inputParameters.http_request field is required for taskType: HTTP taskName: encode")); }
@Test public void testWorkflowTaskTypeFork() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("FORK_JOIN"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(1, result.size()); List<String> validationErrors = new ArrayList<>(); result.forEach(e -> validationErrors.add(e.getMessage())); assertTrue(validationErrors.contains("forkTasks should have atleast one task for taskType: FORK_JOIN taskName: encode")); }
@Test public void testWorkflowTaskTypeEvent() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("EVENT"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(1, result.size()); assertEquals(result.iterator().next().getMessage(), "sink field is required for taskType: EVENT taskName: encode"); }
@Test public void testWorkflowTaskTypeDecision() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("DECISION"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(2, result.size()); List<String> validationErrors = new ArrayList<>(); result.forEach(e -> validationErrors.add(e.getMessage())); assertTrue(validationErrors.contains("decisionCases should have atleast one task for taskType: DECISION taskName: encode")); assertTrue(validationErrors.contains("caseValueParam field is required for taskType: DECISION taskName: encode")); }
@Test public void testWorkflowTaskTypeForJoinDynamic() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("FORK_JOIN_DYNAMIC"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(2, result.size()); List<String> validationErrors = new ArrayList<>(); result.forEach(e -> validationErrors.add(e.getMessage())); assertTrue(validationErrors.contains("dynamicForkTasksInputParamName field is required for taskType: FORK_JOIN_DYNAMIC taskName: encode")); assertTrue(validationErrors.contains("dynamicForkTasksParam field is required for taskType: FORK_JOIN_DYNAMIC taskName: encode")); }
@Test public void testWorkflowTaskTypeDynamic() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("DYNAMIC"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(1, result.size()); assertEquals(result.iterator().next().getMessage(), "dynamicTaskNameParam field is required for taskType: DYNAMIC taskName: encode"); }
@Test public void testWorkflowTaskTypeForJoinDynamicWithForJoinTaskParam() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("FORK_JOIN_DYNAMIC"); workflowTask.setDynamicForkJoinTasksParam("taskList"); workflowTask.setDynamicForkTasksInputParamName("ForkTaskInputParam"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(1, result.size()); List<String> validationErrors = new ArrayList<>(); result.forEach(e -> validationErrors.add(e.getMessage())); assertTrue(validationErrors.contains("dynamicForkJoinTasksParam or combination of dynamicForkTasksInputParamName and dynamicForkTasksParam cam be used for taskType: FORK_JOIN_DYNAMIC taskName: encode")); }
@Test public void testWorkflowTaskTypeHTTP() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("HTTP"); workflowTask.getInputParameters().put("http_request", "http://www.netflix.com"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(0, result.size()); }
@Test public void testWorkflowTaskTypeForJoinDynamicWithForJoinTaskParamAndInputTaskParam() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("FORK_JOIN_DYNAMIC"); workflowTask.setDynamicForkJoinTasksParam("taskList"); workflowTask.setDynamicForkTasksInputParamName("ForkTaskInputParam"); workflowTask.setDynamicForkTasksParam("ForkTasksParam"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(1, result.size()); List<String> validationErrors = new ArrayList<>(); result.forEach(e -> validationErrors.add(e.getMessage())); assertTrue(validationErrors.contains("dynamicForkJoinTasksParam or combination of dynamicForkTasksInputParamName and dynamicForkTasksParam cam be used for taskType: FORK_JOIN_DYNAMIC taskName: encode") ); }
@Test public void testWorkflowTaskTypeForJoinDynamicLegacy() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("FORK_JOIN_DYNAMIC"); workflowTask.setDynamicForkJoinTasksParam("taskList"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(0, result.size()); }
@Test public void testWorkflowTaskTypeHTTPWithHttpParamInTaskDefAndWorkflowTask() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("HTTP"); workflowTask.getInputParameters().put("http_request", "http://www.netflix.com"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); TaskDef taskDef = new TaskDef(); taskDef.setName("encode"); taskDef.getInputTemplate().put("http_request", "http://www.netflix.com"); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(taskDef); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(0, result.size()); }
@Test public void testWorkflowTaskTypeHTTPWithHttpParamInTaskDef() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("HTTP"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); TaskDef taskDef = new TaskDef(); taskDef.setName("encode"); taskDef.getInputTemplate().put("http_request", "http://www.netflix.com"); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(taskDef); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(0, result.size()); }
@Test public void testWorkflowTaskTypeForJoinDynamicValid() { WorkflowTask workflowTask = createSampleWorkflowTask(); workflowTask.setType("FORK_JOIN_DYNAMIC"); workflowTask.setDynamicForkTasksParam("ForkTasksParam"); workflowTask.setDynamicForkTasksInputParamName("ForkTaskInputParam"); ConstraintMapping mapping = config.createConstraintMapping(); mapping.type(WorkflowTask.class) .constraint(new WorkflowTaskTypeConstraintDef()); Validator validator = config.addMapping(mapping) .buildValidatorFactory() .getValidator(); when(mockMetadataDao.getTaskDef(anyString())).thenReturn(new TaskDef()); Set<ConstraintViolation<WorkflowTask>> result = validator.validate(workflowTask); assertEquals(0, result.size()); }
ValidatorFactory getValidatorFactory() { ValidatorFactory tmpValidatorFactory = validatorFactory; if (tmpValidatorFactory == null) { synchronized (RD_LOCK) { tmpValidatorFactory = validatorFactory; if (tmpValidatorFactory == null) { try { // Also look up java:comp/env Context context = new InitialContext(); validatorFactory = tmpValidatorFactory = ValidatorFactory.class.cast(context.lookup("java:comp/ValidatorFactory")); LogMessages.LOGGER.debug(Messages.MESSAGES.usingValidatorFactorySupportsCDI(validatorFactory)); } catch (NamingException e) { LogMessages.LOGGER.info(Messages.MESSAGES.usingValidatorFactoryDoesNotSupportCDI()); HibernateValidatorConfiguration config = Validation.byProvider(HibernateValidator.class).configure(); validatorFactory = tmpValidatorFactory = config.buildValidatorFactory(); } } } } return validatorFactory; }