public void validate() throws ConfigurationException {
        // LATER: Do better. Unlocalized strings which show up in the UI.
        checkSet(mListenPort, "Listen Port");
        checkSet(mFcpHost, "FCP Host");
        checkSet(mFcpPort, "FCP Port");
        checkSet(mFproxyPrefix, "Fproxy Prefix");
        //mAllowImages,
        checkSet(mFmsHost, "FMS Host");
        checkSet(mFmsPort, "FMS Port");
        checkSet(mFmsId, "FMS Id");
        checkSet(mFmsSsk, "FMS Private SSK");
        checkSet(mFmsGroup, "FMS Group");
        checkSet(mWikiName, "Wiki Name");

        if (!Validations.isValidPrivateSsk(mFmsSsk)) {
            throw new ConfigurationException("The private SSK value must start with 'SSK@' " +
                                             "and end with ',AQECAAE/'.");
        }
        if (mFmsId.indexOf("@") != -1 && mFmsId.indexOf(".freetalk") == -1) {
            throw new ConfigurationException("FMS Id Should only include the part before the '@'.");
        }
        if (!mFproxyPrefix.startsWith("http") || !mFproxyPrefix.endsWith("/")) {
            throw new ConfigurationException("The fproxy prefix must start with 'http' and end with '/'.");
        }

        fromStringRep(toStringRep()); // traps '\n's in values.
    }