public void init(final FilterConfig filterConfig) throws ServletException
  {
    final Enumeration<String> initParameterNames = filterConfig.getInitParameterNames();
    final ArrayList<String> names = new ArrayList<String>();
    while (initParameterNames.hasMoreElements())
    {
      names.add(initParameterNames.nextElement());
    }
    Collections.sort(names);

    for (int i = 0; i < names.size(); i++)
    {
      final String paramName = names.get(i);
      if (paramName.startsWith("handler.")) // NON-NLS
      {
        final String initParameter = filterConfig.getInitParameter(paramName);
        try
        {
          final Class<?> aClass = Class.forName(initParameter);
          if (CompatibilityMapper.class.isAssignableFrom(aClass))
          {
            //noinspection unchecked
            addHandler((Class<? extends CompatibilityMapper>) aClass);
          }
        }
        catch (ClassNotFoundException e)
        {
          logger.warn(String.format
              ("Unable to load handler for parameter %s (value is %s)", paramName, initParameter), e); // NON-NLS
        }
      }
    }

    if (handlers.isEmpty())
    {
      logger.warn("Configuring default handlers.");
      addHandler(XActionParameterCompatibilityMapper.class);
      addHandler(XActionViewerCompatibilityMapper.class);
      addHandler(ReportViewerCompatibilityMapper.class);
      addHandler(PrptCompatibilityMapper.class);
      addHandler(AnalyzerCompatibilityMapper.class);
      addHandler(AnalyzerParameterCompatibilityMapper.class);
      addHandler(CdaListQueriesCompatibilityMapper.class);
      addHandler(CdaParameterCompatibilityMapper.class);
      addHandler(CdaQueryCompatibilityMapper.class);
    }
  }