All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jboss.jbossts.xts.environment.XTSPropertiesFactory Maven / Gradle / Ivy

There is a newer version: 4.17.43.Final
Show newest version
package org.jboss.jbossts.xts.environment;

import com.arjuna.common.util.propertyservice.PropertiesFactory;

import java.util.Properties;

/**
 * Created by IntelliJ IDEA.
 * User: adinn
 * Date: Aug 25, 2010
 * Time: 2:45:21 PM
 * To change this template use File | Settings | File Templates.
 */
public class XTSPropertiesFactory
{
    private static volatile Properties defaultProperties = null;

    /**
     * Returns the systems default properties, as read from the configuration file.
     * @return the configuration Properties
     */
    public static Properties getDefaultProperties() {
        if(defaultProperties == null) {
            initDefaultProperties("org.jboss.jbossts.xts.propertiesFile");
        }

        return defaultProperties;
    }

    /**
     * Returns the systems default properties, as read from the configuration file.
     * @return the configuration Properties
     */
    public static synchronized void setDefaultProperties(Properties properties) {
        if(defaultProperties == null) {
            defaultProperties = properties;
        }
    }

    private static synchronized void initDefaultProperties(String fileNamePropertyKey)
    {
        if(defaultProperties != null) {
            return;
        }

        // This is where the properties loading takes place. The algorithm is as follows:

        // If the specified fileNamePropertyKey exists as a key is the system properties, take the value of that property as
        // the location of the module's properties file. This allows file location to be overriden easily.
        String propertyFileName = System.getProperty(fileNamePropertyKey);

        // If the system property is not set, try to load the build time properties. Build time properties
        // are not the module properties! These are optional and so loading may fail. That's not considered an error.
        // If the properties file name is defined by the build time properties, use that.
        // (In JBossTS it mostly does exist - the build scripts put build time properties into the .jars manifest file.)
        if (propertyFileName == null) {
            propertyFileName = "xts-properties.xml";
        }

        // use the TS properties factory but supply the XTS property file name
        // we also need to pass the class loader in case we try to load
        // the file as a resource. this makes sure the resource load is performed
        // relative to the XTS deployment

        defaultProperties = PropertiesFactory.getPropertiesFromFile(propertyFileName, XTSPropertiesFactory.class.getClassLoader());
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy