com.github.lburgazzoli.quickfixj.osgi.ConfigAdminSessionSettingsBuilder.java Source code

Java tutorial

Introduction

Here is the source code for com.github.lburgazzoli.quickfixj.osgi.ConfigAdminSessionSettingsBuilder.java

Source

/*******************************************************************************
 * Copyright (c) quickfixengine.org  All rights reserved.
 *
 * This file is part of the QuickFIX FIX Engine
 *
 * This file may be distributed under the terms of the quickfixengine.org
 * license as defined by quickfixengine.org and appearing in the file
 * LICENSE included in the packaging of this file.
 *
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE.
 *
 * See http://www.quickfixengine.org/LICENSE for licensing information.
 *
 * Contact ask@quickfixengine.org if any conditions of this licensing
 * are not clear to you.
 ******************************************************************************/

package com.github.lburgazzoli.quickfixj.osgi;

import org.apache.commons.lang3.StringUtils;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import quickfix.SessionFactory;
import quickfix.SessionSettings;
import quickfix.SessionSettingsBuilder;

import java.io.IOException;
import java.util.Dictionary;
import java.util.Enumeration;

/**
 *
 */
public class ConfigAdminSessionSettingsBuilder implements SessionSettingsBuilder {
    private static final Logger LOGGER = LoggerFactory.getLogger(ConfigAdminSessionSettingsBuilder.class);

    private final String m_pid;
    private final ConfigurationAdmin m_cfgAdm;

    /**
     * c-tor
     *
     * @param cfgAdm
     * @param pid
     */
    public ConfigAdminSessionSettingsBuilder(final ConfigurationAdmin cfgAdm, String pid) {
        m_cfgAdm = cfgAdm;
        m_pid = pid;
    }

    @Override
    public SessionSettings build() {
        SessionSettings settings = new SessionSettings();

        try {
            Configuration cfg = m_cfgAdm.getConfiguration(m_pid);
            Dictionary<String, Object> prop = cfg.getProperties();

            if (validate(prop)) {
                Enumeration<String> keys = prop.keys();
                String key = null;

                while (keys.hasMoreElements()) {
                    key = keys.nextElement();
                    settings.setString(key, (String) prop.get(key));
                }
            }
        } catch (IOException e) {
            LOGGER.warn("IOException", e);
        }

        return settings;
    }

    // *************************************************************************
    //
    // *************************************************************************

    /**
     *
     * @param prop
     * @return
     */
    private boolean validate(Dictionary<String, Object> prop) {
        return StringUtils.isNoneBlank((String) prop.get(SessionSettings.BEGINSTRING))
                && StringUtils.isNoneBlank((String) prop.get(SessionSettings.SENDERCOMPID))
                && StringUtils.isNoneBlank((String) prop.get(SessionSettings.SENDERSUBID))
                && StringUtils.isNoneBlank((String) prop.get(SessionSettings.SENDERLOCID))
                && StringUtils.isNoneBlank((String) prop.get(SessionSettings.TARGETCOMPID))
                && StringUtils.isNoneBlank((String) prop.get(SessionSettings.TARGETSUBID))
                && StringUtils.isNoneBlank((String) prop.get(SessionSettings.TARGETLOCID))
                && StringUtils.isNoneBlank((String) prop.get(SessionSettings.SESSION_QUALIFIER))
                && StringUtils.isNoneBlank((String) prop.get(SessionFactory.INITIATOR_CONNECTION_TYPE));
    }
}