public static void interceptorsForManagedService(AtmosphereFramework framework, List<Class<? extends AtmosphereInterceptor>> interceptors, List<AtmosphereInterceptor> l) { interceptorsForManagedService(framework, interceptors, l, true); }
public static void interceptorsForManagedService(AtmosphereFramework framework, List<Class<? extends AtmosphereInterceptor>> interceptors, List<AtmosphereInterceptor> l, boolean checkDuplicate) { for (Class<? extends AtmosphereInterceptor> i : interceptors) { if (!framework.excludedInterceptors().contains(i.getName()) && (!checkDuplicate || checkDefault(i))) { try { logger.info("Adding {}", i); l.add(framework.newClassInstance(AtmosphereInterceptor.class, i)); } catch (Throwable e) { logger.warn("", e); } } } }
public static Broadcaster broadcaster(AtmosphereFramework framework, Class<? extends Broadcaster> broadcaster, String path) throws Exception { return framework.getBroadcasterFactory().lookup(broadcasterClass(framework, broadcaster), path, true); }
int delay = am.getAnnotation(Broadcast.class).delay(); Class[] broadcastFilter = am.getAnnotation(Broadcast.class).filters(); if (am.getAnnotation(Broadcast.class).resumeOnBroadcast()) { f = new Filter(Action.RESUME_ON_BROADCAST, delay, 0, Suspend.SCOPE.APPLICATION, broadcastFilter, null, am.getAnnotation(Broadcast.class).writeEntity()); } else { f = new Filter(Action.BROADCAST, delay, 0, Suspend.SCOPE.APPLICATION, broadcastFilter, null, am.getAnnotation(Broadcast.class).writeEntity()); broadcastFilter = am.getAnnotation(Cluster.class).value(); for (Class<ClusterBroadcastFilter> c : broadcastFilter) { try { ClusterBroadcastFilter cbf = c.newInstance(); cbf.setUri(am.getAnnotation(Cluster.class).name()); f.addCluster(cbf); } catch (Throwable t) { int suspendTimeout = am.getAnnotation(Asynchronous.class).period(); Class[] broadcastFilter = am.getAnnotation(Asynchronous.class).broadcastFilter(); boolean wait = am.getAnnotation(Asynchronous.class).waitForResource(); f = new Filter(Action.ASYNCHRONOUS, suspendTimeout, null, broadcastFilter, am.getAnnotation(Asynchronous.class).header(), am.getAnnotation(Asynchronous.class).writeEntity(),
@Override public void handle(AtmosphereFramework framework, Class<Servlet> annotatedClass) { try { ReflectorServletProcessor r = framework.newClassInstance(ReflectorServletProcessor.class, ReflectorServletProcessor.class); r.setServletClassName(annotatedClass.getName()); LinkedList<AtmosphereInterceptor> l = new LinkedList<>(); MeteorService m = annotatedClass.getAnnotation(MeteorService.class); framework.setBroadcasterCacheClassName(m.broadcasterCache().getName()); String mapping = m.path(); atmosphereConfig(m.atmosphereConfig(), framework); filters(m.broadcastFilters(), framework); AtmosphereInterceptor aa = listeners(m.listeners(), framework); if (aa != null) { l.add(aa); } AnnotationUtil.interceptorsForHandler(framework, Arrays.asList(m.interceptors()), l); if (m.path().contains("{")) { l.addFirst(framework.newClassInstance(AtmosphereInterceptor.class, MeteorServiceInterceptor.class)); } framework.addAtmosphereHandler(mapping, r, broadcaster(framework, m.broadcaster(), m.path()), l); } catch (Throwable e) { logger.warn("", e); } }
AnnotationUtil.defaultManagedServiceInterceptors(framework, l); atmosphereConfig(a.atmosphereConfig(), framework); filters(a.broadcastFilters(), framework); AtmosphereInterceptor aa = listeners(a.listeners(), framework); if (aa != null) { l.add(aa); AnnotationUtil.interceptorsForManagedService(framework, Arrays.asList(a.interceptors()), l); framework.addAtmosphereHandler(a.path(), handler, broadcaster(framework, a.broadcaster(), a.path()), l); } catch (Throwable e) { logger.warn("", e);
@Override public void handle(AtmosphereFramework framework, Class<WebSocketHandler> annotatedClass) { try { WebSocketHandlerService m = annotatedClass.getAnnotation(WebSocketHandlerService.class); atmosphereConfig(m.atmosphereConfig(), framework); framework.addAtmosphereHandler(m.path(), AtmosphereFramework.REFLECTOR_ATMOSPHEREHANDLER).initWebSocket(); framework.setDefaultBroadcasterClassName(m.broadcaster().getName()); filters(m.broadcastFilters(), framework); final LinkedList<AtmosphereInterceptor> l = new LinkedList<AtmosphereInterceptor>(); AtmosphereInterceptor aa = listeners(m.listeners(), framework); if (aa != null) { l.add(aa); } AnnotationUtil.interceptorsForHandler(framework, Arrays.asList(m.interceptors()), l); framework.setBroadcasterCacheClassName(m.broadcasterCache().getName()); WebSocketProcessor p = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(framework); framework.addAtmosphereHandler(m.path(), REFLECTOR_ATMOSPHEREHANDLER, l); p.registerWebSocketHandler(m.path(), new WebSocketProcessor.WebSocketHandlerProxy(broadcasterClass(framework, m.broadcaster()), framework.newClassInstance(WebSocketHandler.class, annotatedClass))); } catch (Throwable e) { logger.warn("", e); } }
framework.setBroadcasterCacheClassName(a.broadcasterCache().getName()); atmosphereConfig(a.atmosphereConfig(), framework); framework.setDefaultBroadcasterClassName(a.broadcaster().getName()); filters(a.broadcastFilters(), framework); AtmosphereInterceptor aa = listeners(a.listeners(), framework); if (aa != null) { l.add(aa); AnnotationUtil.interceptorsForHandler(framework, Arrays.asList(a.interceptors()), l); interceptors(a.interceptors(), framework);
@Suspend @GET public String suspend() { return ""; }
webSocket.resource().setBroadcaster(AnnotationUtil.broadcaster(framework, p != null ? p.broadcasterClazz : w.broadcasterClazz, path)); } catch (Exception e) { logger.error("", e);
public AnnotationHandler handleAnnotation(final AtmosphereFramework framework, final Class<? extends Annotation> annotation, final Class<?> discoveredClass) { logger.info("Found Annotation in {} being scanned: {}", discoveredClass, annotation); framework.annotationScanned(true); Class<? extends Processor> a = annotations.get(annotation); if (a != null) { Processor p = processors.get(a); if (p == null) { try { p = framework.newClassInstance(Processor.class, a); } catch (Exception e) { logger.warn("Unable to create Processor {}", p); } processors.put(a, p); } p.handle(framework, discoveredClass); logger.trace("Annotation {} handled by {}", annotation, p.getClass().getName()); } else { logger.trace("Annotation {} unhandled", annotation); } return this; }
@Schedule(period=30) @POST @Path("/ping") public String pingSuspendedClients(){ return "Atmosphere__ping"; } }
@Broadcast({XSSHtmlFilter.class, JsonpFilter.class}) @Consumes("application/x-www-form-urlencoded") @POST public String publishMessage(MultivaluedMap<String, String> form) { String action = form.getFirst("action"); String name = form.getFirst("name"); if ("login".equals(action)) { return ("System Message" + "__" + name + " has joined."); } else if ("post".equals(action)) { return name + "__" + form.getFirst("message"); } else { throw new WebApplicationException(422); } }
AtmosphereHandlerService a = annotatedClass.getAnnotation(AtmosphereHandlerService.class); atmosphereConfig(a.atmosphereConfig(), framework); filters(a.broadcastFilters(), framework); AtmosphereInterceptor aa = listeners(a.listeners(), framework); if (aa != null) { l.add(aa); AnnotationUtil.interceptorsForHandler(framework, Arrays.asList(a.interceptors()), l); framework.addAtmosphereHandler(a.path(), handler, broadcaster(framework, a.broadcaster(), a.path()), l); framework.setBroadcasterCacheClassName(a.broadcasterCache().getName()); } catch (Throwable e) {
@Suspend(contentType = MediaType.APPLICATION_JSON) @GET public String suspend(@Context AtmosphereResource resource) { resource.setBroadcaster(BroadcastHelper.getTradeBroadcaster()); return ""; } }
public void handle(AtmosphereFramework framework, Class<Object> annotatedClass) { try { Class<?> aClass = annotatedClass; PushEndpoint a = aClass.getAnnotation(PushEndpoint.class); List<AtmosphereInterceptor> l = new ArrayList<AtmosphereInterceptor>(); Object c = framework.newClassInstance(Object.class, aClass); AtmosphereHandler handler = framework.newClassInstance( PushEndpointHandlerProxy.class, PushEndpointHandlerProxy.class).configure(framework.getAtmosphereConfig(), c); l.add(framework.newClassInstance(AtmosphereInterceptor.class, PushEndpointInterceptor.class)); Class<? extends Broadcaster> b = (Class<? extends Broadcaster>) IOUtils.loadClass( this.getClass(), framework.getDefaultBroadcasterClassName()); framework.addAtmosphereHandler(a.value(), handler, broadcaster(framework, b, a.value()), l); } catch (Throwable e) { LOG.warn("", e); } }
public static void defaultManagedServiceInterceptors(AtmosphereFramework framework, List<AtmosphereInterceptor> l) { interceptorsForManagedService(framework, MANAGED_ATMOSPHERE_INTERCEPTORS, l, false); }
/** * Open a long poll channel for the given cluster controller. * The channel is closed automatically by the server at * regular intervals to ensure liveliness. * * @param ccid cluster controller id * @param cacheIndex cache index * @param atmosphereTrackingId the tracking for atmosphere * @return new message(s), or nothing if the channel is closed by the servr */ @GET @Path("/{ccid: [A-Z,a-z,0-9,_,\\-,\\.]+}") @Produces({ MediaType.APPLICATION_JSON }) @Suspend(resumeOnBroadcast = true, period = ChannelServiceConstants.EXPIRE_TIME_CONNECTION, timeUnit = TimeUnit.SECONDS, contentType = MediaType.APPLICATION_JSON) public Broadcastable open(@PathParam("ccid") String ccid, @HeaderParam("X-Cache-Index") Integer cacheIndex, @HeaderParam(ChannelServiceConstants.X_ATMOSPHERE_TRACKING_ID) String atmosphereTrackingId) { try { return channelService.openChannel(ccid, cacheIndex, atmosphereTrackingId); } catch (WebApplicationException e) { throw e; } catch (Exception e) { log.error("GET Channels open long poll ccid: error: {}", e.getMessage(), e); throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR); } }