ModularXmppClientToServerConnectionTool.java

/**
 *
 * Copyright 2018-2020 Florian Schmaus
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.jivesoftware.smack.full;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.nio.file.Path;
import java.nio.file.Paths;

import org.jivesoftware.smack.c2s.ModularXmppClientToServerConnectionConfiguration;

import org.jxmpp.stringprep.XmppStringprepException;

public class ModularXmppClientToServerConnectionTool {

    @SuppressWarnings("DefaultCharset")
    public static void main(String[] args) throws XmppStringprepException, FileNotFoundException {

        final PrintWriter pw;
        final boolean breakStateName;

        switch (args.length) {
        case 0:
            pw = new PrintWriter(System.out);
            breakStateName = false;
            break;
        case 1:
            Path outputFilePath = Paths.get(args[0]);
            File outputFile = outputFilePath.toFile();
            if (outputFile.exists()) {
                outputFile.delete();
            }
            pw = new PrintWriter(outputFile);
            breakStateName = true;
            break;
        default:
            throw new IllegalArgumentException("At most one argument allowed");
        }

        printStateGraph(pw, breakStateName);
        pw.flush();
    }

    public static void printStateGraph(PrintWriter pw, boolean breakStateName) throws XmppStringprepException {
        ModularXmppClientToServerConnectionConfiguration.Builder configurationBuilder = ModularXmppClientToServerConnectionConfiguration.builder()
                        .setUsernameAndPassword("user", "password")
                        .setXmppDomain("example.org");

        ModularXmppClientToServerConnectionConfiguration configuration = configurationBuilder.build();

        configuration.printStateGraphInDotFormat(pw, breakStateName);

        pw.flush();
    }

}