View Javadoc
1   /*
2    * Copyright 2012-2025 CodeLibs Project and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  package org.codelibs.fess.validation;
17  
18  import org.codelibs.core.lang.StringUtil;
19  import org.lastaflute.job.util.LaCronUtil;
20  
21  import jakarta.validation.ConstraintValidator;
22  import jakarta.validation.ConstraintValidatorContext;
23  
24  /**
25   * Validator implementation for the CronExpression constraint.
26   */
27  public class CronExpressionValidator implements ConstraintValidator<CronExpression, String> {
28  
29      /**
30       * Default constructor.
31       */
32      public CronExpressionValidator() {
33          // Empty constructor
34      }
35  
36      @Override
37      public void initialize(final CronExpression constraintAnnotation) {
38      }
39  
40      @Override
41      public boolean isValid(final String value, final ConstraintValidatorContext context) {
42          return determineValid(value);
43      }
44  
45      /**
46       * Determines if the given value is a valid cron expression.
47       * @param value the value to validate
48       * @return true if valid, false otherwise
49       */
50      protected boolean determineValid(final String value) {
51          if (StringUtil.isNotBlank(value) && !LaCronUtil.isCronExpValid(value)) {
52              return false;
53          }
54          return true;
55      }
56  
57  }