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);
}