@Override public Object value(Session session, Object... values) { return getEndpointConfig(); } };
/** * Create {@link AnnotatedEndpoint} from class. * * @param annotatedClass annotated class. * @param componentProvider used for instantiating. * @param isServerEndpoint {@code true} iff annotated endpoint is deployed on server side. * @param incomingBufferSize size limit of the incoming buffer. * @param collector error collector. * @param endpointEventListener listener of monitored endpoint events. * @return new instance. */ public static AnnotatedEndpoint fromClass(Class<?> annotatedClass, ComponentProviderService componentProvider, boolean isServerEndpoint, int incomingBufferSize, ErrorCollector collector, EndpointEventListener endpointEventListener) { return new AnnotatedEndpoint(annotatedClass, null, componentProvider, isServerEndpoint, incomingBufferSize, collector, endpointEventListener); }
void onClose(CloseReason closeReason, Session session) { try { if (onCloseMethod != null) { callMethod(onCloseMethod, onCloseParameters, session, true, closeReason); } } finally { componentProvider.removeSession(session); } }
@Override public void register(Class<?> endpointClass, String contextPath) throws DeploymentException { final ErrorCollector collector = new ErrorCollector(); EndpointEventListenerWrapper endpointEventListenerWrapper = new EndpointEventListenerWrapper(); AnnotatedEndpoint endpoint = AnnotatedEndpoint .fromClass(endpointClass, componentProviderService, true, incomingBufferSize, collector, endpointEventListenerWrapper); EndpointConfig config = endpoint.getEndpointConfig(); TyrusEndpointWrapper endpointWrapper = new TyrusEndpointWrapper( endpoint, config, componentProviderService, webSocketContainer, contextPath, config instanceof ServerEndpointConfig ? ((ServerEndpointConfig) config).getConfigurator() : null, sessionListener, clusterContext, endpointEventListenerWrapper, parallelBroadcastEnabled); if (collector.isEmpty()) { register(endpointWrapper); } else { throw collector.composeComprehensiveException(); } String endpointPath = config instanceof ServerEndpointConfig ? ((ServerEndpointConfig) config).getPath() : null; EndpointEventListener endpointEventListener = applicationEventListener.onEndpointRegistered(endpointPath, endpointClass); endpointEventListenerWrapper.setEndpointEventListener(endpointEventListener); }
} else if ((((Class<?>) o).getAnnotation(ClientEndpoint.class) != null)) { endpoint = AnnotatedEndpoint .fromClass((Class) o, componentProvider, false, incomingBufferSize, collector, EndpointEventListener.NO_OP); config = (ClientEndpointConfig) ((AnnotatedEndpoint) endpoint).getEndpointConfig(); } else { collector.addException(new DeploymentException(String.format( .fromInstance(o, componentProvider, false, incomingBufferSize, collector); config = (ClientEndpointConfig) ((AnnotatedEndpoint) endpoint).getEndpointConfig();
private AnnotatedEndpoint(Class<?> annotatedClass, Object instance, ComponentProviderService componentProvider, Boolean isServerEndpoint, int incomingBufferSize, ErrorCollector collector, EndpointEventListener endpointEventListener) { this.configuration = createEndpointConfig(annotatedClass, isServerEndpoint, collector); this.annotatedInstance = instance; this.annotatedClass = annotatedClass; if (onOpen == null) { onOpen = m; onOpenParameters = getParameterExtractors(m, unknownParams, collector); validityChecker.checkOnOpenParams(m, unknownParams); } else { if (onClose == null) { onClose = m; onCloseParameters = getOnCloseParameterExtractors(m, unknownParams, collector); validityChecker.checkOnCloseParams(m, unknownParams); if (unknownParams.size() == 1 && unknownParams.values().iterator().next() != CloseReason if (onError == null) { onError = m; onErrorParameters = getParameterExtractors(m, unknownParams, collector); validityChecker.checkOnErrorParams(m, unknownParams); if (unknownParams.size() == 1 maxMessageSize, m.getName(), annotatedClass.getName(), incomingBufferSize)); final ParameterExtractor[] extractors = getParameterExtractors(m, unknownParams, collector); MessageHandlerFactory handlerFactory;
private boolean checkBinaryDecoders(Class<?> requiredType) { for (Class<? extends Decoder> decoderClass : decoders) { if (isBinaryDecoder(decoderClass) && requiredType.isAssignableFrom(AnnotatedEndpoint.getDecoderClassType(decoderClass))) { return true; } } return false; }
private ParameterExtractor[] getParameterExtractors(final Method method, Map<Integer, Class<?>> unknownParams, ErrorCollector collector) { return getParameterExtractors(method, unknownParams, Collections.<Class<?>>emptySet(), collector); }
private boolean checkEncoders(Class<?> requiredType) { for (Class<? extends Encoder> encoderClass : encoders) { if (AnnotatedEndpoint.getEncoderClassType(encoderClass).isAssignableFrom(requiredType)) { return false; } } return true; }
@Override public void register(Class<?> endpointClass, String contextPath) throws DeploymentException { final ErrorCollector collector = new ErrorCollector(); EndpointEventListenerWrapper endpointEventListenerWrapper = new EndpointEventListenerWrapper(); AnnotatedEndpoint endpoint = AnnotatedEndpoint .fromClass(endpointClass, componentProviderService, true, incomingBufferSize, collector, endpointEventListenerWrapper); EndpointConfig config = endpoint.getEndpointConfig(); TyrusEndpointWrapper endpointWrapper = new TyrusEndpointWrapper( endpoint, config, componentProviderService, webSocketContainer, contextPath, config instanceof ServerEndpointConfig ? ((ServerEndpointConfig) config).getConfigurator() : null, sessionListener, clusterContext, endpointEventListenerWrapper, parallelBroadcastEnabled); if (collector.isEmpty()) { register(endpointWrapper); } else { throw collector.composeComprehensiveException(); } String endpointPath = config instanceof ServerEndpointConfig ? ((ServerEndpointConfig) config).getPath() : null; EndpointEventListener endpointEventListener = applicationEventListener.onEndpointRegistered(endpointPath, endpointClass); endpointEventListenerWrapper.setEndpointEventListener(endpointEventListener); }
} else if ((((Class<?>) o).getAnnotation(ClientEndpoint.class) != null)) { endpoint = AnnotatedEndpoint .fromClass((Class) o, componentProvider, false, incomingBufferSize, collector, EndpointEventListener.NO_OP); config = (ClientEndpointConfig) ((AnnotatedEndpoint) endpoint).getEndpointConfig(); } else { collector.addException(new DeploymentException(String.format( .fromInstance(o, componentProvider, false, incomingBufferSize, collector); config = (ClientEndpointConfig) ((AnnotatedEndpoint) endpoint).getEndpointConfig();
private AnnotatedEndpoint(Class<?> annotatedClass, Object instance, ComponentProviderService componentProvider, Boolean isServerEndpoint, int incomingBufferSize, ErrorCollector collector, EndpointEventListener endpointEventListener) { this.configuration = createEndpointConfig(annotatedClass, isServerEndpoint, collector); this.annotatedInstance = instance; this.annotatedClass = annotatedClass; if (onOpen == null) { onOpen = m; onOpenParameters = getParameterExtractors(m, unknownParams, collector); validityChecker.checkOnOpenParams(m, unknownParams); } else { if (onClose == null) { onClose = m; onCloseParameters = getOnCloseParameterExtractors(m, unknownParams, collector); validityChecker.checkOnCloseParams(m, unknownParams); if (unknownParams.size() == 1 && unknownParams.values().iterator().next() != CloseReason if (onError == null) { onError = m; onErrorParameters = getParameterExtractors(m, unknownParams, collector); validityChecker.checkOnErrorParams(m, unknownParams); if (unknownParams.size() == 1 maxMessageSize, m.getName(), annotatedClass.getName(), incomingBufferSize)); final ParameterExtractor[] extractors = getParameterExtractors(m, unknownParams, collector); MessageHandlerFactory handlerFactory;
private boolean checkTextDecoders(Class<?> requiredType) { for (Class<? extends Decoder> decoderClass : decoders) { if (isTextDecoder(decoderClass) && requiredType.isAssignableFrom(AnnotatedEndpoint.getDecoderClassType(decoderClass))) { return true; } } return false; }
private ParameterExtractor[] getParameterExtractors(final Method method, Map<Integer, Class<?>> unknownParams, ErrorCollector collector) { return getParameterExtractors(method, unknownParams, Collections.<Class<?>>emptySet(), collector); }
private boolean checkEncoders(Class<?> requiredType) { for (Class<? extends Encoder> encoderClass : encoders) { if (AnnotatedEndpoint.getEncoderClassType(encoderClass).isAssignableFrom(requiredType)) { return false; } } return true; }
.fromClass(endpointClass, componentProviderService, true, incomingBufferSize, collector, endpointEventListenerWrapper); final EndpointConfig config = endpoint.getEndpointConfig();
@Override public Object value(Session session, Object... values) { return getEndpointConfig(); } };
void onClose(CloseReason closeReason, Session session) { try { if (onCloseMethod != null) { callMethod(onCloseMethod, onCloseParameters, session, true, closeReason); } } finally { componentProvider.removeSession(session); } }
private boolean checkTextDecoders(Class<?> requiredType) { for (Class<? extends Decoder> decoderClass : decoders) { if (isTextDecoder(decoderClass) && requiredType.isAssignableFrom(AnnotatedEndpoint.getDecoderClassType(decoderClass))) { return true; } } return false; }
private ParameterExtractor[] getOnCloseParameterExtractors(final Method method, Map<Integer, Class<?>> unknownParams, ErrorCollector collector) { return getParameterExtractors( method, unknownParams, new HashSet<Class<?>>(Arrays.asList((Class<?>) CloseReason.class)), collector); }