public Object[] getOnOpenArgs(Map<String,String> pathParameters, Session session, EndpointConfig config) throws DecodeException { return buildArgs(onOpenParams, pathParameters, session, config, null, null); }
PojoMethodMapping methodMapping = new PojoMethodMapping(sec.getEndpointClass(), sec.getDecoders(), path); if (methodMapping.getOnClose() != null || methodMapping.getOnOpen() != null || methodMapping.getOnError() != null || methodMapping.hasMessageHandlers()) { sec.getUserProperties().put(org.apache.tomcat.websocket.pojo.Constants.POJO_METHOD_MAPPING_KEY, methodMapping);
protected final void doOnOpen(Session session, EndpointConfig config) { PojoMethodMapping methodMapping = getMethodMapping(); Object pojo = getPojo(); Map<String,String> pathParameters = getPathParameters(); // Add message handlers before calling onOpen since that may trigger a // message which in turn could trigger a response and/or close the // session for (MessageHandler mh : methodMapping.getMessageHandlers(pojo, pathParameters, session, config)) { session.addMessageHandler(mh); } if (methodMapping.getOnOpen() != null) { try { methodMapping.getOnOpen().invoke(pojo, methodMapping.getOnOpenArgs( pathParameters, session, config)); } catch (IllegalAccessException e) { // Reflection related problems log.error(sm.getString( "pojoEndpointBase.onOpenFail", pojo.getClass().getName()), e); handleOnOpenOrCloseError(session, e); } catch (InvocationTargetException e) { Throwable cause = e.getCause(); handleOnOpenOrCloseError(session, cause); } catch (Throwable t) { handleOnOpenOrCloseError(session, t); } } }
checkPublic(method); if (open == null) { open = method; } else { if (currentClazz == clazzPojo || !isMethodOverride(open, method)) { checkPublic(method); if (close == null) { close = method; } else { if (currentClazz == clazzPojo || !isMethodOverride(close, method)) { checkPublic(method); if (error == null) { error = method; } else { if (currentClazz == clazzPojo || !isMethodOverride(error, method)) { checkPublic(method); MessageHandlerInfo messageHandler = new MessageHandlerInfo(method, decoders); boolean found = false; found = true; if (currentClazz == clazzPojo || !isMethodOverride(messageHandler.m, otherMessageHandler.m)) {
@Override public final void onClose(Session session, CloseReason closeReason) { if (methodMapping.getOnClose() != null) { try { methodMapping.getOnClose().invoke(pojo, methodMapping.getOnCloseArgs(pathParameters, session, closeReason)); } catch (Throwable t) { ExceptionUtils.handleThrowable(t); log.error(sm.getString("pojoEndpointBase.onCloseFail", pojo.getClass().getName()), t); } } // Trigger the destroy method for any associated decoders Set<MessageHandler> messageHandlers = session.getMessageHandlers(); for (MessageHandler messageHandler : messageHandlers) { if (messageHandler instanceof PojoMessageHandlerWholeBase<?>) { ((PojoMessageHandlerWholeBase<?>) messageHandler).onClose(); } } }
@Override public final void onError(Session session, Throwable throwable) { if (methodMapping.getOnError() == null) { log.error(sm.getString("pojoEndpointBase.onError", pojo.getClass().getName()), throwable); } else { try { methodMapping.getOnError().invoke( pojo, methodMapping.getOnErrorArgs(pathParameters, session, throwable)); } catch (Throwable t) { ExceptionUtils.handleThrowable(t); log.error(sm.getString("pojoEndpointBase.onErrorFail", pojo.getClass().getName()), t); } } }
public PojoEndpointClient(Object pojo, Class<? extends Decoder>[] decoders) throws DeploymentException { setPojo(pojo); setMethodMapping( new PojoMethodMapping(pojo.getClass(), decoders, null)); setPathParameters(Collections.<String, String> emptyMap()); }
for (Method method : clazzPojo.getDeclaredMethods()) { if (method.getAnnotation(OnOpen.class) != null) { checkPublic(method); if (open == null) { open = method; checkPublic(method); if (close == null) { close = method; checkPublic(method); if (error == null) { error = method; checkPublic(method); onMessage.add(new MessageHandlerInfo(method, decoders)); } else { this.onClose = close; this.onError = error; onOpenParams = getPathParams(onOpen, MethodType.ON_OPEN); onCloseParams = getPathParams(onClose, MethodType.ON_CLOSE); onErrorParams = getPathParams(onError, MethodType.ON_ERROR);
PojoMethodMapping methodMapping = new PojoMethodMapping(sec.getEndpointClass(), sec.getDecoders(), path); if (methodMapping.getOnClose() != null || methodMapping.getOnOpen() != null || methodMapping.getOnError() != null || methodMapping.hasMessageHandlers()) { sec.getUserProperties().put(org.apache.tomcat.websocket.pojo.Constants.POJO_METHOD_MAPPING_KEY, methodMapping);
protected final void doOnOpen(Session session, EndpointConfig config) { PojoMethodMapping methodMapping = getMethodMapping(); Object pojo = getPojo(); Map<String,String> pathParameters = getPathParameters(); if (methodMapping.getOnOpen() != null) { try { methodMapping.getOnOpen().invoke(pojo, methodMapping.getOnOpenArgs( pathParameters, session, config)); } catch (IllegalAccessException e) { // Reflection related problems log.error(sm.getString( "pojoEndpointBase.onOpenFail", pojo.getClass().getName()), e); handleOnOpenError(session, e); return; } catch (InvocationTargetException e) { Throwable cause = e.getCause(); handleOnOpenError(session, cause); return; } catch (Throwable t) { handleOnOpenError(session, t); return; } } for (MessageHandler mh : methodMapping.getMessageHandlers(pojo, pathParameters, session, config)) { session.addMessageHandler(mh); } }
checkPublic(method); if (open == null) { open = method; } else { if (currentClazz == clazzPojo || !isMethodOverride(open, method)) { checkPublic(method); if (close == null) { close = method; } else { if (currentClazz == clazzPojo || !isMethodOverride(close, method)) { checkPublic(method); if (error == null) { error = method; } else { if (currentClazz == clazzPojo || !isMethodOverride(error, method)) { checkPublic(method); MessageHandlerInfo messageHandler = new MessageHandlerInfo(method, decoders); boolean found = false; found = true; if (currentClazz == clazzPojo || !isMethodOverride(messageHandler.m, otherMessageHandler.m)) {
@Override public final void onClose(Session session, CloseReason closeReason) { if (methodMapping.getOnClose() != null) { try { methodMapping.getOnClose().invoke(pojo, methodMapping.getOnCloseArgs(pathParameters, session, closeReason)); } catch (Throwable t) { log.error(sm.getString("pojoEndpointBase.onCloseFail", pojo.getClass().getName()), t); handleOnOpenOrCloseError(session, t); } } // Trigger the destroy method for any associated decoders Set<MessageHandler> messageHandlers = session.getMessageHandlers(); for (MessageHandler messageHandler : messageHandlers) { if (messageHandler instanceof PojoMessageHandlerWholeBase<?>) { ((PojoMessageHandlerWholeBase<?>) messageHandler).onClose(); } } }
@Override public final void onError(Session session, Throwable throwable) { if (methodMapping.getOnError() == null) { log.error(sm.getString("pojoEndpointBase.onError", pojo.getClass().getName()), throwable); } else { try { methodMapping.getOnError().invoke( pojo, methodMapping.getOnErrorArgs(pathParameters, session, throwable)); } catch (Throwable t) { ExceptionUtils.handleThrowable(t); log.error(sm.getString("pojoEndpointBase.onErrorFail", pojo.getClass().getName()), t); } } }
public PojoEndpointClient(Object pojo, Class<? extends Decoder>[] decoders) throws DeploymentException { setPojo(pojo); setMethodMapping( new PojoMethodMapping(pojo.getClass(), decoders, null)); setPathParameters(Collections.<String, String> emptyMap()); }
for (Method method : clazzPojo.getDeclaredMethods()) { if (method.getAnnotation(OnOpen.class) != null) { checkPublic(method); if (open == null) { open = method; checkPublic(method); if (close == null) { close = method; checkPublic(method); if (error == null) { error = method; checkPublic(method); onMessage.add(new MessageHandlerInfo(method, decoders)); } else { this.onClose = close; this.onError = error; onOpenParams = getPathParams(onOpen, MethodType.ON_OPEN); onCloseParams = getPathParams(onClose, MethodType.ON_CLOSE); onErrorParams = getPathParams(onError, MethodType.ON_ERROR);
PojoMethodMapping methodMapping = new PojoMethodMapping(sec.getEndpointClass(), sec.getDecoders(), path); if (methodMapping.getOnClose() != null || methodMapping.getOnOpen() != null || methodMapping.getOnError() != null || methodMapping.hasMessageHandlers()) { sec.getUserProperties().put(org.apache.tomcat.websocket.pojo.Constants.POJO_METHOD_MAPPING_KEY, methodMapping);
protected final void doOnOpen(Session session, EndpointConfig config) { PojoMethodMapping methodMapping = getMethodMapping(); Object pojo = getPojo(); Map<String,String> pathParameters = getPathParameters(); // Add message handlers before calling onOpen since that may trigger a // message which in turn could trigger a response and/or close the // session for (MessageHandler mh : methodMapping.getMessageHandlers(pojo, pathParameters, session, config)) { session.addMessageHandler(mh); } if (methodMapping.getOnOpen() != null) { try { methodMapping.getOnOpen().invoke(pojo, methodMapping.getOnOpenArgs( pathParameters, session, config)); } catch (IllegalAccessException e) { // Reflection related problems log.error(sm.getString( "pojoEndpointBase.onOpenFail", pojo.getClass().getName()), e); handleOnOpenOrCloseError(session, e); } catch (InvocationTargetException e) { Throwable cause = e.getCause(); handleOnOpenOrCloseError(session, cause); } catch (Throwable t) { handleOnOpenOrCloseError(session, t); } } }
checkPublic(method); if (open == null) { open = method; } else { if (currentClazz == clazzPojo || !isMethodOverride(open, method)) { checkPublic(method); if (close == null) { close = method; } else { if (currentClazz == clazzPojo || !isMethodOverride(close, method)) { checkPublic(method); if (error == null) { error = method; } else { if (currentClazz == clazzPojo || !isMethodOverride(error, method)) { checkPublic(method); MessageHandlerInfo messageHandler = new MessageHandlerInfo(method, decoders); boolean found = false; found = true; if (currentClazz == clazzPojo || !isMethodOverride(messageHandler.m, otherMessageHandler.m)) {
@Override public final void onClose(Session session, CloseReason closeReason) { if (methodMapping.getOnClose() != null) { try { methodMapping.getOnClose().invoke(pojo, methodMapping.getOnCloseArgs(pathParameters, session, closeReason)); } catch (Throwable t) { log.error(sm.getString("pojoEndpointBase.onCloseFail", pojo.getClass().getName()), t); handleOnOpenOrCloseError(session, t); } } // Trigger the destroy method for any associated decoders Set<MessageHandler> messageHandlers = session.getMessageHandlers(); for (MessageHandler messageHandler : messageHandlers) { if (messageHandler instanceof PojoMessageHandlerWholeBase<?>) { ((PojoMessageHandlerWholeBase<?>) messageHandler).onClose(); } } }
@Override public final void onError(Session session, Throwable throwable) { if (methodMapping.getOnError() == null) { log.error(sm.getString("pojoEndpointBase.onError", pojo.getClass().getName()), throwable); } else { try { methodMapping.getOnError().invoke( pojo, methodMapping.getOnErrorArgs(pathParameters, session, throwable)); } catch (Throwable t) { ExceptionUtils.handleThrowable(t); log.error(sm.getString("pojoEndpointBase.onErrorFail", pojo.getClass().getName()), t); } } }