1 22 package org.jboss.kernel.plugins.registry.basic; 23 24 import java.util.Map ; 25 26 import org.jboss.kernel.spi.registry.KernelRegistryEntry; 27 import org.jboss.kernel.spi.registry.KernelRegistryEntryAlreadyRegisteredException; 28 import org.jboss.kernel.spi.registry.KernelRegistryEntryNotFoundException; 29 import org.jboss.kernel.spi.registry.KernelRegistryPlugin; 30 import org.jboss.logging.Logger; 31 import org.jboss.util.collection.CollectionsFactory; 32 33 39 public class BasicKernelRegistryFactory implements KernelRegistryPlugin 40 { 41 42 private static final Logger log = Logger.getLogger(BasicKernelRegistryFactory.class); 43 44 45 protected Map <Object , KernelRegistryEntry> entries = CollectionsFactory.createConcurrentReaderMap(); 46 47 52 public BasicKernelRegistryFactory() throws Exception 53 { 54 } 55 56 public void registerEntry(Object name, KernelRegistryEntry entry) 57 { 58 if (name == null) 59 throw new IllegalArgumentException ("Null name"); 60 if (entry == null) 61 throw new IllegalArgumentException ("Null entry"); 62 63 boolean trace = log.isTraceEnabled(); 64 65 synchronized (entries) 66 { 67 if (entries.containsKey(name)) 68 throw new KernelRegistryEntryAlreadyRegisteredException("Already registered: " + name); 69 entries.put(name, entry); 70 entry.setName(name); 71 } 72 73 if (trace) 74 log.trace("Registered object: '" + entry + "' with name '" + name + "'"); 75 } 76 77 public KernelRegistryEntry unregisterEntry(Object name) 78 { 79 if (name == null) 80 throw new IllegalArgumentException ("Null name"); 81 82 boolean trace = log.isTraceEnabled(); 83 84 KernelRegistryEntry entry; 85 86 synchronized (entries) 87 { 88 entry = entries.remove(name); 89 if (entry == null) 90 throw new KernelRegistryEntryNotFoundException("Not found: " + name); 91 } 92 93 if (trace) 94 log.trace("Unregistered name: '" + name + "'"); 95 96 return entry; 97 } 98 99 public KernelRegistryEntry getEntry(Object name) 100 { 101 if (name == null) 102 throw new IllegalArgumentException ("Null name"); 103 104 return entries.get(name); 105 } 106 } 107 | Popular Tags |