View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.core.persistence.jpa.validation.entity;
20  
21  import javax.validation.ConstraintValidatorContext;
22  import org.apache.syncope.common.lib.types.EntityViolationType;
23  import org.apache.syncope.core.persistence.api.entity.ConnInstance;
24  import org.apache.syncope.core.provisioning.api.utils.ConnPoolConfUtils;
25  import org.apache.syncope.core.provisioning.api.utils.URIUtils;
26  
27  public class ConnInstanceValidator extends AbstractValidator<ConnInstanceCheck, ConnInstance> {
28  
29      @Override
30      public boolean isValid(final ConnInstance connInstance, final ConstraintValidatorContext context) {
31          context.disableDefaultConstraintViolation();
32  
33          boolean isValid = true;
34  
35          if (isHtml(connInstance.getDisplayName())) {
36              context.buildConstraintViolationWithTemplate(
37                      getTemplate(EntityViolationType.InvalidName, connInstance.getDisplayName())).
38                      addPropertyNode("displayName").addConstraintViolation();
39  
40              isValid = false;
41          }
42  
43          try {
44              URIUtils.buildForConnId(connInstance.getLocation());
45          } catch (Exception e) {
46              LOG.error("While validating {}", connInstance.getLocation(), e);
47  
48              context.disableDefaultConstraintViolation();
49              context.buildConstraintViolationWithTemplate(
50                      getTemplate(EntityViolationType.InvalidConnInstanceLocation, e.getMessage())).
51                      addPropertyNode("location").addConstraintViolation();
52  
53              isValid = false;
54          }
55  
56          if (isValid && connInstance.getPoolConf() != null) {
57              try {
58                  ConnPoolConfUtils.getObjectPoolConfiguration(connInstance.getPoolConf()).validate();
59              } catch (Exception e) {
60                  LOG.error("Invalid pool configuration", e);
61  
62                  context.disableDefaultConstraintViolation();
63                  context.buildConstraintViolationWithTemplate(
64                          getTemplate(EntityViolationType.InvalidConnPoolConf, e.getMessage())).
65                          addPropertyNode("poolConf").addConstraintViolation();
66  
67                  isValid = false;
68              }
69          }
70  
71          return isValid;
72      }
73  }