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.myfaces.extensions.validator.trinidad.initializer.component;
20  
21  import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
22  import org.apache.myfaces.extensions.validator.internal.ToDo;
23  import org.apache.myfaces.extensions.validator.internal.Priority;
24  import org.apache.myfaces.extensions.validator.internal.UsageInformation;
25  import org.apache.myfaces.extensions.validator.internal.UsageCategory;
26  import org.apache.myfaces.extensions.validator.trinidad.ExtValTrinidadClientValidatorWrapper;
27  import org.apache.myfaces.trinidad.validator.LongRangeValidator;
28  import org.apache.myfaces.trinidad.validator.ClientValidator;
29  
30  import javax.faces.component.EditableValueHolder;
31  import javax.faces.component.UIComponent;
32  import javax.faces.context.FacesContext;
33  import java.util.Map;
34  
35  /**
36   * @since 1.x.1
37   */
38  @ToDo(value = Priority.MEDIUM, description = "skipValidationSupport for client-side validation")
39  @UsageInformation(UsageCategory.INTERNAL)
40  class LongRangeInitializer extends TrinidadComponentInitializer
41  {
42      @Override
43      public boolean configureTrinidadComponent(FacesContext facesContext, UIComponent uiComponent,
44                                                Map<String, Object> metaData)
45      {
46          boolean informationAdded = false;
47          LongRangeValidator longRangeValidator = (LongRangeValidator)facesContext.getApplication()
48                                              .createValidator("org.apache.myfaces.trinidad.LongRange");
49  
50          Object min = null;
51          if(metaData.containsKey(CommonMetaDataKeys.RANGE_MIN))
52          {
53              min = metaData.get(CommonMetaDataKeys.RANGE_MIN);
54          }
55          else if(metaData.containsKey(CommonMetaDataKeys.RANGE_MIN_DEFAULT))
56          {
57              min = metaData.get(CommonMetaDataKeys.RANGE_MIN_DEFAULT);
58          }
59  
60          if(min instanceof Long)
61          {
62              longRangeValidator.setMinimum((Long)min);
63              informationAdded = true;
64          }
65  
66          Object max = null;
67          if(metaData.containsKey(CommonMetaDataKeys.RANGE_MAX))
68          {
69              max = metaData.get(CommonMetaDataKeys.RANGE_MAX);
70          }
71          else if(metaData.containsKey(CommonMetaDataKeys.RANGE_MAX_DEFAULT))
72          {
73              max = metaData.get(CommonMetaDataKeys.RANGE_MAX_DEFAULT);
74          }
75  
76          if(max instanceof Long)
77          {
78              longRangeValidator.setMaximum((Long)max);
79              informationAdded = true;
80          }
81  
82          if(informationAdded &&
83                  longRangeValidator instanceof ClientValidator && uiComponent instanceof EditableValueHolder)
84          {
85                  ((EditableValueHolder)uiComponent).addValidator(
86                          new ExtValTrinidadClientValidatorWrapper((ClientValidator)longRangeValidator));
87  
88                  return true;
89          }
90          return false;
91      }
92  }