docs: protected final Object resolveEnvEntryValue(String value) // F743-29779
      throws InjectionConfigurationException
      {
          // -----------------------------------------------------------------------
          // If an env-entry-value was not provided, then there is nothing to
          // convert/resolve... just return null.  This env-entry should just
          // be ignored if there is also no lookup value, or a warning logged
          // if there are also no injection targets.
          // -----------------------------------------------------------------------
          if (value == null) {
              return null;
          }
  
          // -----------------------------------------------------------------------
          // EJB 1.1 allows env entries to be one of the following java types.
          // Construct the right type of object to bind.
          // -----------------------------------------------------------------------
          Object injectionObject = null;
  
          if (isEnvEntryType(String.class))
          {
              injectionObject = value;
          }
          else if (isEnvEntryType(Integer.class))
          {
              try
              {
                  injectionObject = Integer.valueOf(value);
              } catch (NumberFormatException e)
              {
                  // this should not happen
                  FFDCFilter.processException(e, CLASS_NAME + ".resolveEnvEntryValue",
                                              "337", this, new Object[] { value });
                  Tr.warning(tc, "NUMBER_FORMAT_EXCEPTION_CWNEN0013W",
                             getJndiName(), value, e);
                  if (isValidationFailable()) // fail if enabled          F743-14449
                  {
                      throw new InjectionConfigurationException("The " + value + " value for the " + getJndiName() +
                                                                " simple environment entry in the " + ivModule +
                                                                " module of the " + ivApplication + " application" +
                                                                " cannot be converted to an integer.", e);
                  }
              }
          }
          else if (isEnvEntryType(Boolean.class))
          {
              injectionObject = Boolean.valueOf(value);
  
              // If the "Boolean" is false, then make sure the correct
              // syntax was really provided, as anything but "true"
              // will result in false. d320818
              if (!((Boolean) injectionObject).booleanValue() &&
                  !value.equalsIgnoreCase("false"))
              {
                  Tr.warning(tc, "INVALID_BOOLEAN_FORMAT_CWNEN0014W", getJndiName(), value);
                  if (isValidationFailable()) // fail if enabled          F743-14449
                  {
                      throw new InjectionConfigurationException("The " + value + " value for the " + getJndiName() +
                                                                " simple environment entry in the " + ivModule +
                                                                " module of the " + ivApplication + " application" +
                                                                " is not a proper boolean value.");
                  }
              }
          }
          else if (isEnvEntryType(Double.class))
          {
              try
              {
                  injectionObject = Double.valueOf(value);
              } catch (NumberFormatException e)
              {
                  // this should not happen
                  FFDCFilter.processException(e, CLASS_NAME + ".resolveEnvEntryValue",
                                              "369", this, new Object[] { value });
                  Tr.warning(tc, "NUMBER_FORMAT_EXCEPTION_CWNEN0013W",
                             getJndiName(), value, e);
                  if (isValidationFailable()) // fail if enabled          F743-14449
                  {
                      throw new InjectionConfigurationException("The " + value + " value for the " + getJndiName() +
                                                                " simple environment entry in the " + ivModule +
                                                                " module of the " + ivApplication + " application" +
                                                                " cannot be converted to a double.", e);
                  }
              }
          }
          else if (isEnvEntryType(Byte.class))
          {
              try
              {
                  injectionObject = Byte.valueOf(value);
              } catch (NumberFormatException e)
              {
                  // this should not happen
                  FFDCFilter.processException(e, CLASS_NAME + ".resolveEnvEntryValue",
                                              "386", this, new Object[] { value });
                  Tr.warning(tc, "NUMBER_FORMAT_EXCEPTION_CWNEN0013W",
                             getJndiName(), value, e);
                  if (isValidationFailable()) // fail if enabled          F743-14449
                  {
                      throw new InjectionConfigurationException("The " + value + " value for the " + getJndiName() +
                                                                " simple environment entry in the " + ivModule +
                                                                " module of the " + ivApplication + " application" +
                                                                " cannot be converted to a byte.", e);
                  }
              }
          }
          else if (isEnvEntryType(Short.class))
          {
              try
              {
                  injectionObject = Short.valueOf(value);
              } catch (NumberFormatException e)
              {
                  // this should not happen
                  FFDCFilter.processException(e, CLASS_NAME + ".resolveEnvEntryValue",
                                              "403", this, new Object[] { value });
                  Tr.warning(tc, "NUMBER_FORMAT_EXCEPTION_CWNEN0013W",
                             getJndiName(), value, e);
                  if (isValidationFailable()) // fail if enabled          F743-14449
                  {
                      throw new InjectionConfigurationException("The " + value + " value for the " + getJndiName() +
                                                                " simple environment entry in the " + ivModule +
                                                                " module of the " + ivApplication + " application" +
                                                                " cannot be converted to a short.", e);
                  }
              }
          }
          else if (isEnvEntryType(Long.class))
          {
              try
              {
                  injectionObject = Long.valueOf(value);
              } catch (NumberFormatException e)
              {
                  // this should not happen
                  FFDCFilter.processException(e, CLASS_NAME + ".resolveEnvEntryValue",
                                              "366", this, new Object[] { value });
                  Tr.warning(tc, "NUMBER_FORMAT_EXCEPTION_CWNEN0013W",
                             getJndiName(), value, e);
                  if (isValidationFailable()) // fail if enabled          F743-14449
                  {
                      throw new InjectionConfigurationException("The " + value + " value for the " + getJndiName() +
                                                                " simple environment entry in the " + ivModule +
                                                                " module of the " + ivApplication + " application" +
                                                                " cannot be converted to a long.", e);
                  }
              }
          }
          else if (isEnvEntryType(Float.class))
          {
              try
              {
                  injectionObject = Float.valueOf(value);
              } catch (NumberFormatException e)
              {
                  // this should not happen
                  FFDCFilter.processException(e, CLASS_NAME + ".resolveEnvEntryValue",
                                              "437", this, new Object[] { value });
                  Tr.warning(tc, "NUMBER_FORMAT_EXCEPTION_CWNEN0013W",
                             getJndiName(), value, e);
                  if (isValidationFailable()) // fail if enabled          F743-14449
                  {
                      throw new InjectionConfigurationException("The " + value + " value for the " + getJndiName() +
                                                                " simple environment entry in the " + ivModule +
                                                                " module of the " + ivApplication + " application" +
                                                                " cannot be converted to a float.", e);
                  }
              }
          }
          else if (isEnvEntryType(Character.class))
          {
              try
              {
                  injectionObject = Character.valueOf(value.charAt(0));
              } catch (Throwable e)
              {
                  // this should not happen
                  FFDCFilter.processException(e, CLASS_NAME + ".resolveEnvEntryValue",
                                              "454", this, new Object[] { value });
                  Tr.warning(tc, "THROWABLE_WHILE_CONSTRUCTING_JAVA_COMP_ENV_CWNEN0015W",
                             getJndiName(), value, e);
                  if (isValidationFailable()) // fail if enabled          F743-14449
                  {
                      throw new InjectionConfigurationException("The " + value + " value for the " + getJndiName() +
                                                                " simple environment entry in the " + ivModule +
                                                                " module of the " + ivApplication + " application" +
                                                                " cannot be converted to a character.", e);
                  }
              }
          }
  
          // -----------------------------------------------------------------------
          // The following data types were added in EJB 3.1 specification
          // -----------------------------------------------------------------------
  
          else if (isEnvEntryType(Class.class)) // F743-25853.1
          {
              if (ivNameSpaceConfig.getClassLoader() == null)
              {
                  // F743-32443 - We don't have a class loader, so use a Reference.
                  injectionObject = EnvEntryObjectFactory.createClassReference(getJndiName(), ivNameSpaceConfig, value); // d680699
              }
              else
              {
                  injectionObject = loadClass(value);
              }
          }
          else if (ivNameSpaceConfig.getClassLoader() == null)
          {
              String className = getInjectionClassTypeName();
              if (className == null) // d701200
              {
                  if (isValidationLoggable()) // F50309.6
                  {
                      invalidEnvEntryType(null);
                  }
                  else
                  {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                          Tr.debug(tc, "missing env-entry-type: ", toString());
                  }
              }
  
              // F743-32443 - We don't have a class loader, so use a Reference.
              injectionObject = EnvEntryObjectFactory.createEnumReference(getJndiName(), ivNameSpaceConfig,
                                                                          getInjectionClassTypeName(), value); // d680699
          }
          else
          {
              Class<?> type = getInjectionClassType();
              if (type != null && type.isEnum()) // F743-25853
              {
                  try
                  {
                      @SuppressWarnings({ "unchecked", "rawtypes" })
                      Object enumValue = Enum.valueOf((Class<? extends Enum>) type, value);
                      injectionObject = enumValue;
                  } catch (IllegalArgumentException ex)
                  {
                      FFDCFilter.processException(ex, CLASS_NAME + ".resolveEnvEntryValue",
                                                  "1946", this, new Object[] { value });
                      Tr.error(tc, "INVALID_ENUM_IDENTIFIER_CWNEN0063E",
                               getJndiName(), ivModule, ivApplication, type.getName(), value);
                      throw new InjectionConfigurationException("CWNEN0063E: The " + getJndiName() + " simple environment entry in the " +
                                                                ivModule + " module of the " + ivApplication +
                                                                " application, which is the " + type.getName() +
                                                                " Enum type, is not set to a valid Enum identifier: '" +
                                                                value + "'.");
                  }
              }
  
              // -----------------------------------------------------------------------
              // When type is not supported.... log a warning
              // -----------------------------------------------------------------------
  
              else
              {
                  // This occurs if an @Resource annotation is applied to a field or
                  // method that is not a primitive type, and then tried to override
                  // that with an env-entry in XML. To be consistent with legacy
                  // support, juat a warning is logged, and any value specified will
                  // be ignored.                                             F743-22218.3
                  invalidEnvEntryType(type == null ? null : type.toString()); // d701200
              }
          }
  
          return injectionObject;
      }