/** Set the specified environment entries in the naming context. */
  public void addEnvironment(ContextEnvironment env) {

    Object value = null;
    // Instantiating a new instance of the correct object type, and
    // initializing it.
    String type = env.getType();
    try {
      if (type.equals("java.lang.String")) {
        value = env.getValue();
      } else if (type.equals("java.lang.Byte")) {
        if (env.getValue() == null) {
          value = new Byte((byte) 0);
        } else {
          value = Byte.decode(env.getValue());
        }
      } else if (type.equals("java.lang.Short")) {
        if (env.getValue() == null) {
          value = new Short((short) 0);
        } else {
          value = Short.decode(env.getValue());
        }
      } else if (type.equals("java.lang.Integer")) {
        if (env.getValue() == null) {
          value = new Integer(0);
        } else {
          value = Integer.decode(env.getValue());
        }
      } else if (type.equals("java.lang.Long")) {
        if (env.getValue() == null) {
          value = new Long(0);
        } else {
          value = Long.decode(env.getValue());
        }
      } else if (type.equals("java.lang.Boolean")) {
        value = Boolean.valueOf(env.getValue());
      } else if (type.equals("java.lang.Double")) {
        if (env.getValue() == null) {
          value = new Double(0);
        } else {
          value = Double.valueOf(env.getValue());
        }
      } else if (type.equals("java.lang.Float")) {
        if (env.getValue() == null) {
          value = new Float(0);
        } else {
          value = Float.valueOf(env.getValue());
        }
      } else if (type.equals("java.lang.Character")) {
        if (env.getValue() == null) {
          value = new Character((char) 0);
        } else {
          if (env.getValue().length() == 1) {
            value = new Character(env.getValue().charAt(0));
          } else {
            throw new IllegalArgumentException();
          }
        }
      } else {
        log(sm.getString("naming.invalidEnvEntryType", env.getName()));
      }
    } catch (NumberFormatException e) {
      log(sm.getString("naming.invalidEnvEntryValue", env.getName()));
    } catch (IllegalArgumentException e) {
      log(sm.getString("naming.invalidEnvEntryValue", env.getName()));
    }

    // Binding the object to the appropriate name
    if (value != null) {
      try {
        if (debug >= 2) log("  Adding environment entry " + env.getName());
        createSubcontexts(envCtx, env.getName());
        envCtx.bind(env.getName(), value);
      } catch (NamingException e) {
        log(sm.getString("naming.invalidEnvEntryValue", e));
      }
    }
  }