making PartitonManager Singleton, efficiently
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/902f06c6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/902f06c6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/902f06c6 Branch: refs/heads/master Commit: 902f06c654331f4f96c9247946e878f67ac82d70 Parents: a1b99dd Author: Nirmal Fernando <[email protected]> Authored: Mon Dec 16 10:16:14 2013 +0530 Committer: Nirmal Fernando <[email protected]> Committed: Mon Dec 16 10:17:23 2013 +0530 ---------------------------------------------------------------------- .../autoscaler/partition/PartitionManager.java | 69 ++------------------ 1 file changed, 7 insertions(+), 62 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/902f06c6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java index b80e46e..55205a9 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java @@ -43,39 +43,24 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); // Partitions against partitionID private static Map<String,Partition> partitions = new HashMap<String, Partition>(); -// private List<NetworkPartitionContext> networkPartitions; - - /* - * Key - partition id - * Value - reference to NetworkPartition - */ -// private Map<String, NetworkPartitionContext> partitionIdToNetworkPartition; - - /* * Key - network partition id * Value - reference to NetworkPartition */ private Map<String, NetworkPartitionContext> networkPartitionContexts; - private static PartitionManager instance; + private static class Holder { + static final PartitionManager INSTANCE = new PartitionManager(); + } + + public static PartitionManager getInstance(){ + return Holder.INSTANCE; + } private PartitionManager(){ networkPartitionContexts = new HashMap<String, NetworkPartitionContext>(); -// networkPartitions = new ArrayList<NetworkPartitionContext>(); -// partitionIdToNetworkPartition = new HashMap<String, NetworkPartitionContext>(); } - public static PartitionManager getInstance(){ - if (instance == null) { - synchronized (PartitionManager.class) { - if (instance == null) { - instance = new PartitionManager(); - } - } - } - return instance; - } public boolean partitionExist(String partitionId){ return partitions.containsKey(partitionId); @@ -110,49 +95,10 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); partitions.put(partition.getId(), partition); } -// public NetworkPartitionContext getNetworkPartitionOfPartition(String partitionId) { -// return this.partitionIdToNetworkPartition.get(partitionId); -// } - public NetworkPartitionContext getNetworkPartition(String networkPartitionId) { return this.networkPartitionContexts.get(networkPartitionId); } -// public List<NetworkPartitionContext> getAllNetworkPartitions() { -// return this.networkPartitions; -// } - -// /** -// * TODO make {@link NetworkPartitionContext}s extensible. -// * @param partition -// */ -// protected NetworkPartitionContext getOrAddNetworkPartition(Partition partition) { -// -// if(partition == null) { -// return null; -// } -// String provider = partition.getProvider(); -// String region = null; -// Properties properties = partition.getProperties(); -// if (properties != null) { -// for (Property prop : properties.getProperties()) { -// if(Constants.REGION_PROPERTY.equals(prop.getName())) { -// region = prop.getValue(); -// break; -// } -// } -// } -// NetworkPartitionContext networkPar = new NetworkPartitionContext(provider, region); -// if(!this.networkPartitions.contains(networkPar)){ -// this.networkPartitions.add(networkPar); -// } else { -// int idx = this.networkPartitions.indexOf(networkPar); -// networkPar = this.networkPartitions.get(idx); -// } -// -// return networkPar; -// } - public Partition getPartitionById(String partitionId){ if(partitionExist(partitionId)) return partitions.get(partitionId); @@ -161,7 +107,6 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); } public Partition[] getAllPartitions(){ - //return Collections.unmodifiableList(new ArrayList<Partition>(partitions.values())); return partitions.values().toArray(new Partition[0]); }
