On Wed, Mar 9, 2011 at 11:30, Jason Porter <lightguard.jp(a)gmail.com> wrote:
On Wed, Mar 9, 2011 at 09:03, aalmiray <aalmiray(a)yahoo.com>
wrote:
> Hello guys. I'm new to Weld and CDI, perhaps the subject of this message
is a
> bit obvious to some of you but for the life of me couldn't find a
portable
> solution to the following problem: Weld will pick up all classes of an
> application (found in a single jar that contains an empty beans.xml
file),
> however I would like the container to cherry pick a set of classes based
on
> some criteria (package name, class name convention, annotation, etc).
>
> I've seen that Weld has an extension (non-standard) that allows classes
to
> be annotated with @Veto. It works fine but it poses to additional
problems:
> - @Veto is Weld specific
The annotation is specific to Weld (hopefully will make it into the
CDI 1.1 spec), but the way it works is not.
Two corrections :) @Veto is part of Seam (Seam Solder), not Weld. Also, it
is portable, as it's based on the portable extension facility in CDI.
Since you can write your own extensions, the solutions to your question are
boundless. i can give you some other starting points to consider.
Instead of including beans.xml, which will automatically cause all candidate
types to be picked up as beans, you can go the other route and leave out
beans.xml, and register beans explicitly. Here's an example:
public class ManualBeanRegistrationExtension implements Extension {
public void registerBeans(@Observes BeforeBeanDiscovery event,
BeanManager bm) {
event.addAnnotatedType(bm.createAnnotatedType(BeanClassToRegister.class));
}
}
Another approach is to use Weld's scanning configuration. That is a
non-portable solution, though, so you'd have weigh that. If I'm not
mistaken, that feature is being discussed for CDI 1.1.
http://docs.jboss.org/weld/reference/1.1.0.Final/en-US/html/configure.htm...
-Dan
--
Dan Allen
Principal Software Engineer, Red Hat | Author of Seam in Action
Registered Linux User #231597
http://www.google.com/profiles/dan.j.allen#about
http://mojavelinux.com
http://mojavelinux.com/seaminaction