package org.deephacks.westty.internal.sockjs;
import org.deephacks.westty.sockjs.SockJsEndpoint;
import org.deephacks.westty.sockjs.SockJsMessage;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
import javax.inject.Singleton;
@Singleton
public class SockJsEnpointExtension implements Extension {
private SockJsEndpoints endpoints;
public <X> void processAnnotatedType(@Observes ProcessAnnotatedType<X> pat, BeanManager beanManager) {
if(endpoints == null){
endpoints = new SockJsEndpoints(beanManager);
}
if (!pat.getAnnotatedType().isAnnotationPresent(SockJsEndpoint.class)) {
return;
}
final AnnotatedType<X> org = pat.getAnnotatedType();
for (AnnotatedMethod<?> method : org.getMethods()) {
SockJsMessage anno = method.getAnnotation(SockJsMessage.class);
if (anno == null) {
continue;
}
endpoints.put(anno.value(), method.getJavaMember());
}
}
public SockJsEndpoints getEndpoints(){
return endpoints;
}
}