[jboss-cvs] JBossAS SVN: r107827 - in projects/cluster/ha-server-ispn/trunk/src/main: java/org/jboss/ha/ispn/config and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Aug 26 23:29:42 EDT 2010


Author: pferraro
Date: 2010-08-26 23:29:41 -0400 (Thu, 26 Aug 2010)
New Revision: 107827

Modified:
   projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainerRegistry.java
   projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/config/CacheContainerRegistryConfigurationEntry.java
   projects/cluster/ha-server-ispn/trunk/src/main/resources/META-INF/infinispan-configs.xsd
Log:
Alias cannot utilize xs:ID, since we need to allow JMX object names, which are not valid xml ids.
Consequently, detect and warn about duplicate aliases.

Modified: projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainerRegistry.java
===================================================================
--- projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainerRegistry.java	2010-08-27 01:48:27 UTC (rev 107826)
+++ projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/DefaultCacheContainerRegistry.java	2010-08-27 03:29:41 UTC (rev 107827)
@@ -23,9 +23,9 @@
 
 import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicReference;
 
 import javax.naming.Context;
@@ -59,8 +59,8 @@
    private final CacheContainerFactory factory;
    private final CacheContainerRegistryConfigurationSource source;
    private final Context context;
-   private final Map<String, String> aliases = new ConcurrentHashMap<String, String>();
-   private final Map<String, CacheContainerRegistryEntry> containers = new ConcurrentHashMap<String, CacheContainerRegistryEntry>();
+   private final ConcurrentMap<String, String> aliases = new ConcurrentHashMap<String, String>();
+   private final ConcurrentMap<String, CacheContainerRegistryEntry> containers = new ConcurrentHashMap<String, CacheContainerRegistryEntry>();
 
    private volatile EmbeddedCacheManager defaultContainer;
    
@@ -179,11 +179,21 @@
       CacheContainerRegistryEntry entry = new CacheContainerRegistryEntry(container, jndiName, aliases);
       
       // Store cache containers with jndi name, so they can be unbound during stop()
-      this.containers.put(id, entry);
+      CacheContainerRegistryEntry existingEntry = this.containers.putIfAbsent(id, entry);
       
+      if (existingEntry != null)
+      {
+         throw new IllegalArgumentException(id + " cache container is already registered.");
+      }
+      
       for (String alias: aliases)
       {
-         this.aliases.put(alias, id);
+         String existingAlias = this.aliases.putIfAbsent(alias, id);
+         
+         if (existingAlias != null)
+         {
+            logger.warn("Ignoring alias " + alias + " for " + id + " cache container because it is already assigned to " + existingAlias);
+         }
       }
       
       this.start(entry);

Modified: projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/config/CacheContainerRegistryConfigurationEntry.java
===================================================================
--- projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/config/CacheContainerRegistryConfigurationEntry.java	2010-08-27 01:48:27 UTC (rev 107826)
+++ projects/cluster/ha-server-ispn/trunk/src/main/java/org/jboss/ha/ispn/config/CacheContainerRegistryConfigurationEntry.java	2010-08-27 03:29:41 UTC (rev 107827)
@@ -50,7 +50,6 @@
    @XmlAttribute(name = "jndi-name", required = false)
    private String jndiName;
    
-   @XmlID
    @XmlElement(name = "alias")
    private List<String> aliases = new LinkedList<String>();
    

Modified: projects/cluster/ha-server-ispn/trunk/src/main/resources/META-INF/infinispan-configs.xsd
===================================================================
--- projects/cluster/ha-server-ispn/trunk/src/main/resources/META-INF/infinispan-configs.xsd	2010-08-27 01:48:27 UTC (rev 107826)
+++ projects/cluster/ha-server-ispn/trunk/src/main/resources/META-INF/infinispan-configs.xsd	2010-08-27 03:29:41 UTC (rev 107827)
@@ -15,7 +15,7 @@
   
   <xs:complexType name="cacheContainerRegistryConfigurationEntry">
     <xs:sequence>
-      <xs:element name="alias" type="xs:ID" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="alias" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element ref="ispn:infinispan"/>
     </xs:sequence>
     <xs:attribute name="name" type="xs:ID" use="required"/>



More information about the jboss-cvs-commits mailing list