Skip to content

Commit

Permalink
WBRI-218
Browse files Browse the repository at this point in the history
git-svn-id: http://anonsvn.jboss.org/repos/weld/ri/trunk@2298 1c488680-804c-0410-94cd-c6b725194a0e
  • Loading branch information
pmuir committed Apr 4, 2009
1 parent c52a6bb commit ad3862a
Show file tree
Hide file tree
Showing 8 changed files with 223 additions and 129 deletions.
11 changes: 11 additions & 0 deletions impl/src/main/java/org/jboss/webbeans/RootManager.java
Expand Up @@ -67,6 +67,7 @@
import org.jboss.webbeans.context.ApplicationContext;
import org.jboss.webbeans.context.ContextMap;
import org.jboss.webbeans.context.CreationalContextImpl;
import org.jboss.webbeans.el.NamespaceManager;
import org.jboss.webbeans.event.EventManager;
import org.jboss.webbeans.event.ObserverImpl;
import org.jboss.webbeans.injection.NonContextualInjector;
Expand Down Expand Up @@ -135,6 +136,8 @@ public class RootManager implements WebBeansManager, Serializable
private final transient Map<Bean<?>, Bean<?>> specializedBeans;

private final transient NonContextualInjector nonContextualInjector;

private final transient NamespaceManager namespaceManager;

/**
* Create a new manager
Expand All @@ -161,6 +164,7 @@ protected Stack<InjectionPoint> initialValue()
};
this.specializedBeans = new HashMap<Bean<?>, Bean<?>>();
this.nonContextualInjector = new NonContextualInjector(this);
this.namespaceManager = new NamespaceManager();
List<Class<? extends Annotation>> defaultEnabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
defaultEnabledDeploymentTypes.add(0, Standard.class);
defaultEnabledDeploymentTypes.add(1, Production.class);
Expand Down Expand Up @@ -206,6 +210,7 @@ public Manager addBean(Bean<?> bean)
}
resolver.clear();
beans.add(bean);
namespaceManager.register(bean);
return this;
}

Expand Down Expand Up @@ -398,6 +403,7 @@ public void setBeans(Set<RIBean<?>> beans)
newEnterpriseBeanMap.put(bean.getType(), (EnterpriseBean<?>) bean);
}
riBeans.put(bean.getId(), bean);
namespaceManager.register(bean);
}
resolver.clear();
}
Expand Down Expand Up @@ -867,6 +873,11 @@ public Resolver getResolver()
{
return resolver;
}

public NamespaceManager getNamespaceManager()
{
return namespaceManager;
}

/**
* Gets a string representation
Expand Down
43 changes: 29 additions & 14 deletions impl/src/main/java/org/jboss/webbeans/el/Namespace.java
Expand Up @@ -11,29 +11,45 @@
*/
public class Namespace
{
private final String qualifiedName;
private final String name;
private final Map<String, Namespace> children = new HashMap<String, Namespace>();

private String name;
private Map<String, Namespace> children = new HashMap<String, Namespace>();

public Namespace(String name)
public Namespace(String name, String qualifiedName)
{
this.name = name;
this.qualifiedName = qualifiedName;
}

public Namespace getChild(String key)
public Namespace putIfAbsent(String key)
{
Namespace result = children.get(key);
if (result==null)
{
result = new Namespace( getQualifiedName(key) + '.' );
children.put(name, result);
result = new Namespace( key, qualifyName(key) );
children.put(key, result);
}
return result;
}

public Namespace get(String key)
{
return children.get(key);
}

public boolean contains(String key)
{
return children.containsKey(key);
}

public String getQualifiedName(String key)
public String getQualifiedName()
{
return qualifiedName;
}

public String qualifyName(String suffix)
{
return name==null ? key : name + key;
return qualifiedName == null ? suffix : qualifiedName + "." + suffix;
}

@Override
Expand All @@ -45,15 +61,14 @@ public int hashCode()
@Override
public boolean equals(Object other)
{
if ( !(other instanceof Namespace) )
if (other instanceof Namespace)
{
return false;
Namespace that = (Namespace) other;
return this.getQualifiedName().equals(that.getQualifiedName());
}
else
{
Namespace ns = (Namespace) other;
return this.name==ns.name ||
( this.name!=null && this.name.equals(ns.name) );
return false;
}
}

Expand Down
34 changes: 34 additions & 0 deletions impl/src/main/java/org/jboss/webbeans/el/NamespaceManager.java
@@ -0,0 +1,34 @@
package org.jboss.webbeans.el;

import javax.inject.manager.Bean;

public class NamespaceManager
{

private final Namespace root;

public NamespaceManager()
{
root = new Namespace(null, null);
}

public void register(Bean<?> bean)
{
if (bean.getName() != null && bean.getName().indexOf('.') > 0)
{
String name = bean.getName().substring(0, bean.getName().lastIndexOf('.'));
String[] hierarchy = name.split("\\.");
Namespace namespace = root;
for (String s : hierarchy)
{
namespace = namespace.putIfAbsent(s);
}
}
}

public Namespace getRoot()
{
return root;
}

}
110 changes: 0 additions & 110 deletions impl/src/main/java/org/jboss/webbeans/el/NamespacedResolver.java

This file was deleted.

@@ -0,0 +1,49 @@
/**
*
*/
package org.jboss.webbeans.el;

import org.jboss.webbeans.context.DependentContext;
import org.jboss.webbeans.context.DependentInstancesStore;
import org.jboss.webbeans.context.DependentStorageRequest;

abstract class RunInDependentContext
{

private final DependentStorageRequest dependentStorageRequest;

public RunInDependentContext()
{
dependentStorageRequest = DependentStorageRequest.of(new DependentInstancesStore(), new Object());
}

private void setup()
{
DependentContext.INSTANCE.setActive(true);
DependentContext.INSTANCE.startCollectingDependents(dependentStorageRequest);
}

private void cleanup()
{
DependentContext.INSTANCE.stopCollectingDependents(dependentStorageRequest);
// TODO kinky
dependentStorageRequest.getDependentInstancesStore().destroyDependentInstances(dependentStorageRequest.getKey());
DependentContext.INSTANCE.setActive(false);
}

protected abstract void execute() throws Exception;

public final void run() throws Exception
{
try
{
setup();
execute();
}
finally
{
cleanup();
}
}

}

0 comments on commit ad3862a

Please sign in to comment.