Util.java :  » EJB-Server » resin-4.0.7 » javax » faces » component » Java Open Source

Java Open Source » EJB Server » resin 4.0.7 
resin 4.0.7 » javax » faces » component » Util.java
/*
 * Copyright (c) 1998-2010 Caucho Technology -- all rights reserved
 *
 * This file is part of Resin(R) Open Source
 *
 * Each copy or derived work must preserve the copyright notice and this
 * notice unmodified.
 *
 * Resin Open Source is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2
 * as published by the Free Software Foundation.
 *
 * Resin Open Source is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
 * of NON-INFRINGEMENT.  See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Resin Open Source; if not, write to the
 *
 *   Free Software Foundation, Inc.
 *   59 Temple Place, Suite 330
 *   Boston, MA 02111-1307  USA
 *
 * @author Scott Ferguson
 */

package javax.faces.component;

import java.util.*;

import javax.el.*;

import javax.faces.*;
import javax.faces.application.*;
import javax.faces.context.*;
import javax.faces.convert.*;

final class Util
{
  static final Object eval(ValueExpression expr, FacesContext context)
  {
    try {
      return expr.getValue(context.getELContext());
    } catch (ELException e) {
      throw new FacesException(e);
    }
  }

  static final Boolean booleanValueOf(Object value)
  {
    if (value == null)
      return Boolean.FALSE;
    else if (value instanceof Boolean)
      return (Boolean) value;
    else if (value instanceof String)
      return ("true".equalsIgnoreCase((String) value)
              ? Boolean.TRUE
              : Boolean.FALSE);
    else
      return Boolean.FALSE;
  }
  
  static final boolean evalBoolean(ValueExpression expr, FacesContext context)
  {
    try {
      Object value = expr.getValue(context.getELContext());

      if (value == null)
        return false;
      else if (value instanceof Boolean)
        return ((Boolean) value).booleanValue();
      else if (value instanceof String)
        return "true".equalsIgnoreCase((String) value);
      else
        return false;
    } catch (ELException e) {
      throw new FacesException(e);
    }
  }
  
  static final int evalInt(ValueExpression expr, FacesContext context)
  {
    try {
      return (Integer) expr.getValue(context.getELContext());
    } catch (ELException e) {
      throw new FacesException(e);
    }
  }
  
  static final String evalString(ValueExpression expr, FacesContext context)
  {
    try {
      return (String) expr.getValue(context.getELContext());
    } catch (ELException e) {
      throw new FacesException(e);
    }
  }

  static String save(ValueExpression expr,
         FacesContext context)
  {
    if (expr != null)
      return expr.getExpressionString();
    else
      return null;
  }

  static Object saveWithType(ValueExpression expr,
             FacesContext context)
  {
    if (expr != null) {
      return new Object[] { expr.getExpressionString(),
          expr.getExpectedType() };
    }
    else
      return null;
  }

  static ValueExpression restoreWithType(Object value,
           FacesContext context)
  {
    if (value == null)
      return null;

    Object []state = (Object []) value;

    String expr = (String) state[0];
    Class type = (Class) state[1];

    Application app = context.getApplication();
    ExpressionFactory factory = app.getExpressionFactory();
    
    return factory.createValueExpression(context.getELContext(),
           expr,
           type);
  }

  static ValueExpression restoreBoolean(Object value, FacesContext context)
  {
    return restore(value, Boolean.class, context);
  }

  static ValueExpression restoreString(Object value, FacesContext context)
  {
    return restore(value, String.class, context);
  }

  static ValueExpression restore(Object value,
         Class type,
         FacesContext context)
  {
    if (value == null)
      return null;

    String expr = (String) value;

    Application app = context.getApplication();
    ExpressionFactory factory = app.getExpressionFactory();
    
    return factory.createValueExpression(context.getELContext(),
           expr,
           type);
  }

  public static String l10n(FacesContext context, String id,
          String defaultMessage, Object ... args)
  {
    String message = getMessage(context, id, defaultMessage);
    
    StringBuilder sb = new StringBuilder();

    int len = message.length();
    for (int i = 0; i < len; i++) {
      char ch = message.charAt(i);

      if (ch == '{' && i + 2 < len
    && '0' <= message.charAt(i + 1)
    && message.charAt(i + 1) <= '9'
    && message.charAt(i + 2) == '}') {
  int index = message.charAt(i + 1) - '0';

  if (index < args.length)
    sb.append(args[index]);

  i += 2;
      }
      else
  sb.append(ch);
    }
    
    return sb.toString();
  }

  public static String getLabel(FacesContext context, UIComponent component)
  {
    String label = (String) component.getAttributes().get("label");

    if (label != null && ! "".equals(label))
      return label;
    else
      return component.getClientId(context);
  }
  
  private static String getMessage(FacesContext context,
           String messageId,
           String defaultMessage)
  {
    Application app = context.getApplication();

    String bundleName = app.getMessageBundle();

    if (bundleName == null)
      return defaultMessage;
    
    ResourceBundle bundle = app.getResourceBundle(context, bundleName);

    if (bundle == null)
      return defaultMessage;

    String msg = bundle.getString(messageId);

    if (msg != null)
      return msg;
    else
      return defaultMessage;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.