el-next@uel.java.net

Reverse-lookup EL names

From: Lincoln Baxter, III <lincolnbaxter_at_gmail.com>
Date: Wed, 31 Mar 2010 19:06:48 -0400

I'm seeing benefit for a TypeMapper or NameMapper off of the ELContext
object.

When working with Bean Containers, each container has a different API for
looking up beans and getting information about them. For instance, if I
wanted to know what names were associated with a bean of type
"com.ocpsoft.MyBean," there's currently no way of doing that through EL. I
can go out to the bean containers themselves in order to get that
information, but EL hides it.

The use case:
I've annotated a class, and a method on that class, and want to use that
annotation to invoke an operation on that bean:

@ExtensionDefined
> @javax.enterprise.context.Named("something")
> public class MyBean {
>
> @ExecuteThis
> public void action() {}
>
> }
>

The custom annotations' scanner has access to the Class Type, but without
providing direct support for Spring, CDI, Seam, Guice, JSF, etc -- has no
idea what that class is named in the EL.

The ELContext has hooks into whatever bean-container backs it (if there even
is one -- it could be completely custom) and can provide names for a given
type.

So:

@Inject ELContext context; //assume this works for example purposes...
> TypeMapper mapper = context.getTypeMapper();
> Set<String> names = mapper.getNames(Class<?> clazz); // lists all names for
> which the provided type is registered.
>

This is a very rough concept, but what do you think? I think the value is
there, but specifics need to be worked out.

-- 
Lincoln Baxter, III
http://ocpsoft.com
http://scrumshark.com
"Keep it Simple"