[webbeans-commits] Webbeans SVN: r2943 - in ri/trunk/impl/src/main/java/org/jboss/webbeans: el and 1 other directory.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Wed Jul 1 11:03:49 EDT 2009
Author: pete.muir at jboss.org
Date: 2009-07-01 11:03:48 -0400 (Wed, 01 Jul 2009)
New Revision: 2943
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/el/Namespace.java
Log:
Split out namespaces data structure from namespace resolver service
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java 2009-07-01 14:37:36 UTC (rev 2942)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java 2009-07-01 15:03:48 UTC (rev 2943)
@@ -206,6 +206,7 @@
private transient final TypeSafeResolver<EventObserver<?>> observerResolver;
private transient final NameBasedResolver nameBasedResolver;
private transient final ELResolver webbeansELResolver;
+ private transient Namespace rootNamespace;
/*
* Activity scoped data structures
@@ -213,8 +214,9 @@
*/
private transient final List<Bean<?>> beans;
private transient final List<DecoratorBean<?>> decorators;
- private transient final Namespace rootNamespace;
+ private transient final List<String> namespaces;
private transient final List<EventObserver<?>> observers;
+
private transient final Set<BeanManagerImpl> childActivities;
private final Integer id;
@@ -244,7 +246,7 @@
new CopyOnWriteArrayList<Bean<?>>(),
new CopyOnWriteArrayList<DecoratorBean<?>>(),
new CopyOnWriteArrayList<EventObserver<?>>(),
- new Namespace(),
+ new CopyOnWriteArrayList<String>(),
new ConcurrentHashMap<Class<?>, EnterpriseBean<?>>(),
new ConcurrentHashMap<String, RIBean<?>>(),
new ClientProxyProvider(),
@@ -267,14 +269,15 @@
List<EventObserver<?>> registeredObservers = new CopyOnWriteArrayList<EventObserver<?>>();
registeredObservers.addAll(parentManager.getObservers());
- Namespace rootNamespace = new Namespace(parentManager.getRootNamespace());
+ List<String> namespaces = new CopyOnWriteArrayList<String>();
+ namespaces.addAll(parentManager.getNamespaces());
return new BeanManagerImpl(
parentManager.getServices(),
beans,
parentManager.getDecorators(),
registeredObservers,
- rootNamespace,
+ namespaces,
parentManager.getNewEnterpriseBeanMap(),
parentManager.getRiBeans(),
parentManager.getClientProxyProvider(),
@@ -292,7 +295,22 @@
*
* @param ejbServices the ejbResolver to use
*/
- private BeanManagerImpl(ServiceRegistry serviceRegistry, List<Bean<?>> beans, List<DecoratorBean<?>> decorators, List<EventObserver<?>> registeredObservers, Namespace rootNamespace, Map<Class<?>, EnterpriseBean<?>> newEnterpriseBeans, Map<String, RIBean<?>> riBeans, ClientProxyProvider clientProxyProvider, ConcurrentListMultiMap<Class<? extends Annotation>, Context> contexts, Set<CurrentActivity> currentActivities, Map<Contextual<?>, Contextual<?>> specializedBeans, List<Class<? extends Annotation>> enabledDeploymentTypes, List<Class<?>> enabledDecoratorClasses, AtomicInteger ids)
+ private BeanManagerImpl(
+ ServiceRegistry serviceRegistry,
+ List<Bean<?>> beans,
+ List<DecoratorBean<?>> decorators,
+ List<EventObserver<?>> registeredObservers,
+ List<String> namespaces,
+ Map<Class<?>, EnterpriseBean<?>> newEnterpriseBeans,
+ Map<String, RIBean<?>> riBeans,
+ ClientProxyProvider clientProxyProvider,
+ ConcurrentListMultiMap<Class<? extends Annotation>,
+ Context> contexts,
+ Set<CurrentActivity> currentActivities,
+ Map<Contextual<?>, Contextual<?>> specializedBeans,
+ List<Class<? extends Annotation>> enabledDeploymentTypes,
+ List<Class<?>> enabledDecoratorClasses,
+ AtomicInteger ids)
{
this.services = serviceRegistry;
this.beans = beans;
@@ -306,7 +324,7 @@
this.observers = registeredObservers;
setEnabledDeploymentTypes(enabledDeploymentTypes);
setEnabledDecoratorClasses(enabledDecoratorClasses);
- this.rootNamespace = rootNamespace;
+ this.namespaces = namespaces;
this.ids = ids;
this.id = ids.incrementAndGet();
@@ -557,13 +575,7 @@
{
if (bean.getName() != null && bean.getName().indexOf('.') > 0)
{
- String name = bean.getName().substring(0, bean.getName().lastIndexOf('.'));
- String[] hierarchy = name.split("\\.");
- Namespace namespace = getRootNamespace();
- for (String s : hierarchy)
- {
- namespace = namespace.putIfAbsent(s);
- }
+ namespaces.add(bean.getName().substring(0, bean.getName().lastIndexOf('.')));
}
}
@@ -1040,6 +1052,14 @@
return contexts;
}
+ /**
+ * @return the namespaces
+ */
+ protected List<String> getNamespaces()
+ {
+ return namespaces;
+ }
+
protected AtomicInteger getIds()
{
return ids;
@@ -1062,6 +1082,11 @@
public Namespace getRootNamespace()
{
+ // TODO I don't like this lazy init
+ if (rootNamespace == null)
+ {
+ rootNamespace = new Namespace(getNamespaces());
+ }
return rootNamespace;
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/el/Namespace.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/Namespace.java 2009-07-01 14:37:36 UTC (rev 2942)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/el/Namespace.java 2009-07-01 15:03:48 UTC (rev 2943)
@@ -18,7 +18,6 @@
import java.util.HashMap;
import java.util.Map;
-import java.util.Map.Entry;
/**
* A namespace for bean names
@@ -33,29 +32,24 @@
private final Map<String, Namespace> children;
/**
- * Create a new namespace hierarchy, creating copies of all children as
- * children of this node
+ * Create a new namespace hierarchy
*
* @param namespace
*/
- public Namespace(Namespace namespace)
+ public Namespace(Iterable<String> namespaces)
{
- this(namespace.getName(), namespace.getQualifiedName());
- for (Entry<String, Namespace> entry : namespace.getChildren().entrySet())
+ this(null, null);
+ for (String namespace : namespaces)
{
- children.put(entry.getKey(), new Namespace(entry.getValue()));
+ String[] hierarchy = namespace.split("\\.");
+ Namespace n = this;
+ for (String s : hierarchy)
+ {
+ n = n.putIfAbsent(s);
+ }
}
}
- /**
- * Create a new, root, namespace
- *
- */
- public Namespace()
- {
- this(null, null);
- }
-
protected Namespace(String name, String qualifiedName)
{
this.name = name;
@@ -63,7 +57,7 @@
this.children = new HashMap<String, Namespace>();
}
- public Namespace putIfAbsent(String key)
+ private Namespace putIfAbsent(String key)
{
Namespace result = children.get(key);
if (result==null)
More information about the weld-commits
mailing list