
Seam3JMSExtension
By: a guest on
Jan 20th, 2011 | syntax:
Java | size: 1.42 KB | views:
49 | expires: Never
Interface:
public void mapLongsToTopic(@Observes Long id, @JmsDestination(jndiName="jms/LongT") Topic t);
code in extension:
try{
for(AnnotatedParameter<?> ap : m.getParameters()) {
if(ap.getBaseType() instanceof Class) {
Class<?> clazz = (Class<?>)ap.getBaseType();
if(Destination.class.isAssignableFrom(clazz)) {
d.add(resolveDestination(bm,ap));
} else if (ap.isAnnotationPresent(Observes.class)){
type = ap.getBaseType();
qualifiers.addAll(getQualifiersFrom(ap.getAnnotations()));
}
}
}
} catch (Exception e) {
log.warn("Exception mapping for method "+m.getJavaMember().getDeclaringClass()+"."+m.getJavaMember().getName()+", ",e);
}
public static Destination resolveDestination(BeanManager bm, AnnotatedParameter<?> ap)
{
Set<Annotation> qs = getQualifiersFrom(ap.getAnnotations());
Set<Bean<?>> beans = bm.getBeans(ap.getBaseType(), qs.toArray(new Annotation[]{}));
Bean<?> bean = bm.resolve(beans);
CreationalContext<?> context = bm.createCreationalContext(bean);
Object ref = bm.getReference(bean, ap.getBaseType(), context);
return (Destination)ref;
}