private void prepare()

in tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/DateRenderer.java [336:391]


  private void prepare(final FacesContext facesContext, final T component) {
    DateType type = component.getType();
    String pattern = component.getPattern();

    DateTimeConverter converter = null;
    if (type == null || pattern == null) {
      Converter someConverter = getConverter(facesContext, component, component.getSubmittedValue()); // XXX submitted?
      if (someConverter instanceof DateTimeConverter) {
        converter = (DateTimeConverter) someConverter;
      }
    }

    if (type == null) {
      if (converter != null) {
        final String typeFromConverter = converter.getType();
        if (TYPE_DATE.equals(typeFromConverter)) {
          type = DateType.DATE;
        } else if (TYPE_BOTH.equals(typeFromConverter)) {
          type = DateType.DATETIME_LOCAL;
        } else if (TYPE_TIME.equals(typeFromConverter)) {
          type = DateType.TIME;
        } else if (TYPE_LOCAL_DATE.equals(typeFromConverter)) {
          type = DateType.DATE;
        } else if (TYPE_LOCAL_DATE_TIME.equals(typeFromConverter)) {
          type = DateType.DATETIME_LOCAL;
        } else if (TYPE_LOCAL_TIME.equals(typeFromConverter)) {
          type = DateType.TIME;
        } else if (TYPE_ZONED_DATE_TIME.equals(typeFromConverter)) {
          type = DateType.DATETIME_LOCAL;
        } else if (TYPE_OFFSET_DATE_TIME.equals(typeFromConverter)) {
          type = DateType.DATETIME_LOCAL;
        } else if (TYPE_OFFSET_TIME.equals(typeFromConverter)) {
          type = DateType.TIME;
        } else if (TYPE_MONTH.equals(typeFromConverter)) {
          type = DateType.MONTH;
        } else if (TYPE_WEEK.equals(typeFromConverter)) {
          type = DateType.WEEK;
        } else { // unknown type
          type = DateType.DATE;
        }
      } else { // no converter
        type = DateType.DATE;
      }
    }

    if (pattern == null && converter != null) {
      pattern = converter.getPattern();
    }

    if (pattern == null) {
      pattern = type.getPattern();
    }

    component.setPattern(pattern);
    component.setType(type);
  }