1 11 package org.eclipse.ui.internal.components.util; 12 13 import java.util.HashMap ; 14 import java.util.Map ; 15 16 import org.eclipse.ui.internal.components.Assert; 17 import org.eclipse.ui.internal.components.framework.ComponentException; 18 import org.eclipse.ui.internal.components.framework.IServiceProvider; 19 20 31 public final class ServiceMap implements IServiceProvider { 32 33 37 private IServiceProvider parent = null; 38 39 42 private Map overriddenInstances = null; 43 44 47 public ServiceMap() { 48 } 49 50 55 public ServiceMap(IServiceProvider parent) { 56 Assert.isNotNull(parent); 57 this.parent = parent; 58 } 59 60 63 public Object getService(Object key) throws ComponentException { 64 if (overriddenInstances != null && overriddenInstances.containsKey(key)) { 65 return overriddenInstances.get(key); 66 } 67 68 if (parent != null) { 69 return parent.getService(key); 70 } 71 72 return null; 73 } 74 75 82 public ServiceMap map(Object key, Object instance) { 83 if (overriddenInstances == null) { 84 overriddenInstances = new HashMap (); 85 } 86 87 overriddenInstances.put(key, instance); 88 89 return this; 90 } 91 92 98 public ServiceMap unmap(Object key) { 99 if (overriddenInstances == null) { 100 return this; 101 } 102 103 overriddenInstances.remove(key); 104 105 if (overriddenInstances.isEmpty()) { 106 overriddenInstances = null; 107 } 108 109 return this; 110 } 111 112 115 public boolean hasService(Object key) { 116 if (overriddenInstances != null && overriddenInstances.containsKey(key)) { 117 return overriddenInstances.get(key) != null; 118 } 119 120 if (parent != null) { 121 return parent.hasService(key); 122 } 123 124 return false; 125 } 126 } 127 | Popular Tags |