Author: dgolovin
Date: 2011-08-03 20:54:46 -0400 (Wed, 03 Aug 2011)
New Revision: 33575
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/XModelFactory.java
Log:
Factory method changed to use singleton holder pattern instead of double check pattern
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/XModelFactory.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/XModelFactory.java 2011-08-04
00:53:22 UTC (rev 33574)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/XModelFactory.java 2011-08-04
00:54:46 UTC (rev 33575)
@@ -13,21 +13,22 @@
import org.jboss.tools.common.model.util.*;
/**
- * Factory class to create instances of XModel interface.
- * See getDefaultInstance() method for details.
+ * 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$
-
+
+ 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();
@@ -35,22 +36,21 @@
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.
+
+ /**
+ * 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() {
- if (defaultInstance != null) {
- return defaultInstance;
- } else {
- synchronized (monitor) {
- if (defaultInstance == null) {
- defaultInstance = createInstance(ClassLoaderUtil.getProperties());
- }
- }
- return defaultInstance;
- }
+ return DefaultModelHolder.DEFAULT_INSTANCE;
}
+
+ private static final class DefaultModelHolder {
+ static final XModel DEFAULT_INSTANCE = defaultInstance =
createInstance(ClassLoaderUtil
+ .getProperties());
+ }
}