// ACCESSORS/MUTATORS
  public T get() {
    LOG.debug("Invoke {}.", this);

    URL configurationResource = null;

    try {
      configurationResource = getResource();
    } catch (final IOException e) {
      LOG.warn(
          "Configuration entity file not found [entity: {}, file: {}].",
          new Object[] {clazz, configuration.value(), e});

      if (null != fallback) {
        LOG.debug("Trying fallback [entity: {}, fallback: {}].", clazz, fallback);

        return getFallback();
      }
    }

    final FileIO fileIo = providerInjector.get().getInstance(FileIO.class);
    String configurationFileContent = fileIo.readResource(configurationResource);

    if (null != configurationFileContent) {
      for (final String key : bundle.getConfiguration().keySet()) {
        final String value = JSONObject.quote(bundle.getConfiguration().get(key));

        configurationFileContent =
            StringUtils.replace(
                configurationFileContent, "${" + key + "}", value.substring(1, value.length() - 1));
      }
    }

    try {
      final T configuration = objectMapper.readValue(configurationFileContent, clazz);

      providerInjector.get().injectMembers(configuration);

      return configuration;
    } catch (final IOException e) {
      LOG.warn(
          "Invalid configuration entity file [entity: {}, file: {}].",
          new Object[] {clazz, configurationResource, e});

      if (null != fallback) {
        LOG.debug("Trying fallback [entity: {}, fallback: {}].", clazz, fallback);

        return getFallback();
      }
    }

    return null;
  }