/* * Copyright 2011-2012 Blazebit */ package com.blazebit.blazefaces.renderkit; import javax.faces.component.UIComponent; import javax.faces.component.ValueHolder; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; public class OutputRenderer extends CoreRenderer { protected String getCurrentValue(FacesContext context, UIComponent component) { String currentValue = null; Object currentObj = ((ValueHolder) component).getValue(); if (currentObj != null) { currentValue = getFormattedValue(context, component, currentObj, ((ValueHolder) component).getConverter()); } return currentValue; } protected Converter getConverter(FacesContext context, UIComponent component){ ValueHolder valHolder = (ValueHolder) component; Converter converter = valHolder.getConverter(); if (converter == null) { Object value = valHolder.getValue(); if(value != null){ Class<?> converterType = value.getClass(); converter = context.getApplication().createConverter(converterType); } } return converter; } protected String getFormattedValue(FacesContext context, UIComponent component, Object currentValue, Converter converter) throws ConverterException { if (!(component instanceof ValueHolder)) { if (currentValue != null) { return currentValue.toString(); } return null; } if (converter == null) { converter = ((ValueHolder) component).getConverter(); } if (converter == null) { if (currentValue == null) { return ""; } if (currentValue instanceof String) { return (String) currentValue; } Class<?> converterType = currentValue.getClass(); converter = context.getApplication().createConverter(converterType); if (converter == null) { return currentValue.toString(); } } return converter.getAsString(context, component, currentValue); } }