/* * XModelFactory.java * * Created on January 17, 2002, 9:36 AM */ package org.jboss.tools.common.model; import java.util.Properties; import org.jboss.tools.common.meta.XModelMetaData; import org.jboss.tools.common.meta.impl.XModelMetaDataImpl; import org.jboss.tools.common.model.impl.XModelImpl; /** * Factory class to create instances of XModel interface. See * getDefaultInstance() method for details. * * @author IShabalov */ public class XModelFactory { static public final String META_PATH = "/meta"; //$NON-NLS-1$ private static XModel defaultInstance = null; private static Object monitor = new Object(); public static XModel getModel(Properties p) { return createInstance(p); } private static final XModel createInstance(Properties p) { XModelConstants.validate(p); XModelMetaData meta = XModelMetaDataImpl.getInstance(); XModelImpl model = new XModelImpl(p, meta); model.load(); return model; } /** * Use this method to obtain default instance of interface * org.jboss.tools.common.model.XModel This implementation return single * instance and create it if it was not created yet. * * @return default XModel instance. * */ public static final XModel getDefaultInstance() { return DefaultModelHolder.DEFAULT_INSTANCE; } private static final class DefaultModelHolder { static final XModel DEFAULT_INSTANCE = defaultInstance = createInstance(System.getProperties()); } }