code: public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
      {
          if (facesContext == null)
          {
              throw new NullPointerException("facesContext");
          }
          if (uiComponent == null)
          {
              throw new NullPointerException("uiComponent");
          }
  
          if (value != null)
          {
              value = value.trim();
              if (value.length() > 0)
              {
                  DateFormat format = getDateFormat();
                  TimeZone tz = getTimeZone();
                  if( tz != null )
                  {
                      format.setTimeZone(tz);
                  }
                  try
                  {
                      return format.parse(value);
                  }
                  catch (ParseException e)
                  {
                      String type = getType();
                      Object[] args = new Object[]{value,
                              format.format(new Date()),_MessageUtils.getLabel(facesContext, uiComponent)};
                      
                      if(type.equals(TYPE_DATE))
                      {
                          throw new ConverterException(_MessageUtils.getErrorMessage(facesContext, DATE_ID, args));
                      }
                      else if (type.equals(TYPE_TIME))
                      {
                          throw new ConverterException(_MessageUtils.getErrorMessage(facesContext, TIME_ID, args));
                      }
                      else if (type.equals(TYPE_BOTH))
                      {
                          throw new ConverterException(_MessageUtils.getErrorMessage(facesContext, DATETIME_ID, args));
                      }
                      else
                      {
                          throw new ConverterException("invalid type '" + _type + "'");
                      }
                  }
              }
          }
          return null;
      }
docs: METHODS