class Configuration implements Serializable {

    private static final long serialVersionUID = -1;

    private List<LdapServer> servers = new ArrayList<>();
    private int interval;
    private String searchBase;
    private WebHooks webHooks;
    private int searchTimeout;
    private int connectTimeout;
    private int readTimeout;
    private int countLimit;

    public void setServers(List<LdapServer> servers) {
        this.servers = servers;
    }

    public List<LdapServer> getServers() {
        return servers;
    }

    public void setWebHooks(WebHooks webHooks) {
        this.webHooks = webHooks;
    }

    public WebHooks getWebHooks() {
        return webHooks;
    }

    public int getInterval() {
        return interval;
    }

    public void setInterval(int interval) {
        this.interval = interval;
    }

    public int getSearchTimeout() {
        return this.searchTimeout;
    }

    public void setSearchTimeout(int timeout) {
        this.searchTimeout = timeout;
    }

    public int getConnectTimeout() {
        return this.connectTimeout;
    }

    public void setConnectTimeout(int timeout) {
        this.connectTimeout = timeout;
    }

    public int getReadTimeout() {
        return this.readTimeout;
    }

    public void setReadTimeout(int timeout) {
        this.readTimeout = timeout;
    }

    public int getCountLimit() {
        return this.countLimit;
    }

    public void setCountLimit(int limit) {
        this.countLimit = limit;
    }

    public String getSearchBase() {
        return searchBase;
    }

    public void setSearchBase(String base) {
        this.searchBase = base;
    }

    public String getXMLRepresentationAsString() {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        this.encodeObject(bos);
        return bos.toString();
    }

    private void encodeObject(OutputStream out) {<FILL_FUNCTION_BODY>}

    /**
     * Read a configuration from a file in XML format.
     *
     * @param file input file
     * @return the new configuration object
     * @throws IOException if any error occurs
     */
    public static Configuration read(File file) throws IOException {
        try (FileInputStream in = new FileInputStream(file)) {
            return decodeObject(in);
        }
    }

    /**
     * Read a configuration from a string in xml format.
     *
     * @param xmlconfig input string
     * @return the new configuration object
     * @throws IOException if any error occurs
     */
    public static Configuration makeXMLStringAsConfiguration(String xmlconfig) throws IOException {
        final Configuration ret;
        final ByteArrayInputStream in = new ByteArrayInputStream(xmlconfig.getBytes());
        ret = decodeObject(in);
        return ret;
    }

    private static Configuration decodeObject(InputStream in) throws IOException {
        final Object ret;

        try (XMLDecoder d = new XMLDecoder(new BufferedInputStream(in), null, null,
                new PluginConfigurationClassLoader())) {
            ret = d.readObject();
        }

        if (!(ret instanceof Configuration)) {
            throw new IOException("Not a valid configuration file");
        }

        return (Configuration) ret;
    }
}

        try (XMLEncoder e = new XMLEncoder(new BufferedOutputStream(out))) {
            e.writeObject(this);
        }
    
<no_super_class>