Author: julien(a)jboss.com
Date: 2007-01-18 18:53:20 -0500 (Thu, 18 Jan 2007)
New Revision: 6043
Modified:
trunk/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java
Log:
use CopyOnWriteRegistry in AbstractPortalObjectContainer for the content handler registry
Modified:
trunk/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java 2007-01-18
23:51:07 UTC (rev 6042)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java 2007-01-18
23:53:20 UTC (rev 6043)
@@ -40,12 +40,11 @@
import org.jboss.portal.security.spi.provider.PermissionFactory;
import org.jboss.portal.security.spi.provider.PermissionRepository;
import org.jboss.portal.security.spi.provider.SecurityConfigurationException;
+import org.jboss.portal.common.util.CopyOnWriteRegistry;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
-import java.util.Map;
-import java.util.HashMap;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -62,7 +61,7 @@
private InstanceContainer instanceContainer;
/** . */
- private volatile Map contentHandlerRegistry;
+ private CopyOnWriteRegistry contentHandlerRegistry;
public InstanceContainer getInstanceContainer()
{
@@ -72,31 +71,12 @@
public void setInstanceContainer(InstanceContainer instanceContainer)
{
this.instanceContainer = instanceContainer;
- this.contentHandlerRegistry = new HashMap();
+ this.contentHandlerRegistry = new CopyOnWriteRegistry();
}
public void registerHandler(ContentType contentType, ContentHandler handler) throws
IllegalArgumentException
{
- if (contentType == null)
- {
- throw new IllegalArgumentException();
- }
- if (handler == null)
- {
- throw new IllegalArgumentException();
- }
- synchronized(this)
- {
- if (contentHandlerRegistry.containsKey(contentType))
- {
- throw new IllegalArgumentException("Content type " + contentType +
" is already registered");
- }
-
- //
- Map tmp = new HashMap(contentHandlerRegistry);
- tmp.put(contentType, handler);
- contentHandlerRegistry = tmp;
- }
+ contentHandlerRegistry.register(contentType, handler);
}
public ContentHandler getHandler(ContentType contentType)
@@ -106,22 +86,7 @@
public void unregisterHandler(ContentType contentType)
{
- if (contentType == null)
- {
- throw new IllegalArgumentException();
- }
- synchronized(this)
- {
- if (contentHandlerRegistry.containsKey(contentType) == false)
- {
- throw new IllegalArgumentException("Content type " + contentType +
" is not registered");
- }
-
- //
- Map tmp = new HashMap(contentHandlerRegistry);
- tmp.remove(contentType);
- contentHandlerRegistry = tmp;
- }
+ contentHandlerRegistry.unregister(contentType);
}
public PortalObject getRootObject()
Show replies by date