private static Object[] buildArgs(PojoPathParam[] pathParams, Map<String,String> pathParameters, Session session, EndpointConfig config, Throwable throwable, CloseReason closeReason) throws DecodeException { Object[] result = new Object[pathParams.length]; for (int i = 0; i < pathParams.length; i++) { Class<?> type = pathParams[i].getType(); if (type.equals(Session.class)) { result[i] = session; } else if (type.equals(EndpointConfig.class)) { result[i] = config; } else if (type.equals(Throwable.class)) { result[i] = throwable; } else if (type.equals(CloseReason.class)) { result[i] = closeReason; } else { String name = pathParams[i].getName(); String value = pathParameters.get(name); try { result[i] = Util.coerceToType(type, value); } catch (Exception e) { throw new DecodeException(value, sm.getString( "pojoMethodMapping.decodePathParamFail", value, type), e); } } } return result; }
public static List<DecoderEntry> getDecoders( Class<? extends Decoder>[] decoderClazzes) throws DeploymentException{ List<DecoderEntry> result = new ArrayList<>(); for (Class<? extends Decoder> decoderClazz : decoderClazzes) { // Need to instantiate decoder to ensure it is valid and that // deployment can be failed if it is not @SuppressWarnings("unused") Decoder instance; try { instance = decoderClazz.newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new DeploymentException( sm.getString("pojoMethodMapping.invalidDecoder", decoderClazz.getName()), e); } DecoderEntry entry = new DecoderEntry( Util.getDecoderType(decoderClazz), decoderClazz); result.add(entry); } return result; }
private static DecoderMatch matchDecoders(Class<?> target, EndpointConfig endpointConfig) { DecoderMatch decoderMatch; try { List<Class<? extends Decoder>> decoders = endpointConfig.getDecoders(); List<DecoderEntry> decoderEntries = getDecoders(decoders); decoderMatch = new DecoderMatch(target, decoderEntries); } catch (DeploymentException e) { throw new IllegalArgumentException(e); } return decoderMatch; }
if (Util.isControl(mp.getOpCode())) { nextFragmented = fragmented; nextText = text; boolean isText = Util.isText(mp.getOpCode()); mask = Util.generateMask(); } else { mask = null;
return getTypeParameter( clazz, pi.getActualTypeArguments()[0]); (Class<? extends T>) clazz.getSuperclass(); TypeResult superClassTypeResult = getGenericType(type, superClazz); int dimension = superClassTypeResult.getDimension(); if (superClassTypeResult.getIndex() == -1 && dimension == 0) { TypeResult result = getTypeParameter(clazz, superClassType.getActualTypeArguments()[ superClassTypeResult.getIndex()]);
Class<?> target = Util.getMessageType(listener); MessageHandlerResult result = new MessageHandlerResult( new PojoMessageHandlerWholeBinary(listener, getOnMessageMethod(listener), session, endpointConfig, null, new Object[1], 0, true, -1, false, -1), MessageHandlerResult result = new MessageHandlerResult( new PojoMessageHandlerWholeBinary(listener, getOnMessageMethod(listener), session, endpointConfig, null, new Object[1], 0, true, -1, true, -1), MessageHandlerResult result = new MessageHandlerResult( new PojoMessageHandlerWholeText(listener, getOnMessageMethod(listener), session, endpointConfig, null, new Object[1], 0, true, -1, -1), endpointConfig.getDecoders(); @SuppressWarnings("unchecked") List<DecoderEntry> decoderEntries = getDecoders( decoders.toArray(new Class[decoders.size()])); decoderMatch = new DecoderMatch(target, decoderEntries); Method m = getOnMessageMethod(listener); if (decoderMatch.getBinaryDecoders().size() > 0) { MessageHandlerResult result = new MessageHandlerResult(
static Class<?> getMessageType(MessageHandler listener) { return Util.getGenericType(MessageHandler.class, listener.getClass()).getClazz(); }
MessageHandlerResult result = new MessageHandlerResult( whole ? new PojoMessageHandlerWholeBinary(listener, getOnMessageMethod(listener), session, endpointConfig, matchDecoders(target, endpointConfig, true), new Object[1], 0, true, -1, false, -1) : new PojoMessageHandlerPartialBinary(listener, getOnMessagePartialMethod(listener), session, new Object[2], 0, true, 1, -1, -1), MessageHandlerResultType.BINARY); MessageHandlerResult result = new MessageHandlerResult( new PojoMessageHandlerWholeBinary(listener, getOnMessageMethod(listener), session, endpointConfig, matchDecoders(target, endpointConfig, true), new Object[1], 0, true, -1, true, -1), MessageHandlerResultType.BINARY); MessageHandlerResult result = new MessageHandlerResult( new PojoMessageHandlerWholeText(listener, getOnMessageMethod(listener), session, endpointConfig, matchDecoders(target, endpointConfig, false), new Object[1], 0, true, -1, -1), MessageHandlerResultType.TEXT); DecoderMatch decoderMatch = matchDecoders(target, endpointConfig); Method m = getOnMessageMethod(listener); if (decoderMatch.getBinaryDecoders().size() > 0) { MessageHandlerResult result = new MessageHandlerResult(
MessageHandlerResult result = new MessageHandlerResult( new PojoMessageHandlerWholeBinary(listener, getOnMessageMethod(listener), session, endpointConfig, null, new Object[1], 0, true, -1, false, -1), MessageHandlerResult result = new MessageHandlerResult( new PojoMessageHandlerWholeBinary(listener, getOnMessageMethod(listener), session, endpointConfig, null, new Object[1], 0, true, -1, true, -1), MessageHandlerResult result = new MessageHandlerResult( new PojoMessageHandlerWholeText(listener, getOnMessageMethod(listener), session, endpointConfig, null, new Object[1], 0, true, -1, -1), endpointConfig.getDecoders(); @SuppressWarnings("unchecked") List<DecoderEntry> decoderEntries = getDecoders( decoders.toArray(new Class[decoders.size()])); decoderMatch = new DecoderMatch(target, decoderEntries); Method m = getOnMessageMethod(listener); if (decoderMatch.getBinaryDecoders().size() > 0) { MessageHandlerResult result = new MessageHandlerResult(
Util.generateMask(); if (extHeaders != null) { for (String extHeader : extHeaders) { Util.parseExtensionHeader(extensionsAgreed, extHeader);
protected void setEncoders(EndpointConfig endpointConfig) throws DeploymentException { encoderEntries.clear(); for (Class<? extends Encoder> encoderClazz : endpointConfig.getEncoders()) { Encoder instance; try { instance = encoderClazz.getConstructor().newInstance(); instance.init(endpointConfig); } catch (ReflectiveOperationException e) { throw new DeploymentException( sm.getString("wsRemoteEndpoint.invalidEncoder", encoderClazz.getName()), e); } EncoderEntry entry = new EncoderEntry( Util.getEncoderType(encoderClazz), instance); encoderEntries.add(entry); } }
Set<MessageHandlerResult> mhResults = Util.getMessageHandlers(target, listener, endpointConfig, this);
wsSession.onClose(new CloseReason(Util.getCloseCode(code), reason)); } else if (opCode == Constants.OPCODE_PING) { if (wsSession.isOpen()) {
@Override public void addMessageHandler(MessageHandler listener) { Class<?> target = Util.getMessageType(listener); doAddMessageHandler(target, listener); }
if (Util.isControl(mp.getOpCode())) { nextFragmented = fragmented; nextText = text; boolean isText = Util.isText(mp.getOpCode()); mask = Util.generateMask(); } else { mask = null;
return getTypeParameter( clazz, pi.getActualTypeArguments()[0]); TypeResult superClassTypeResult = getGenericType(type, superClazz); int dimension = superClassTypeResult.getDimension(); if (superClassTypeResult.getIndex() == -1 && dimension == 0) { TypeResult result = getTypeParameter(clazz, superClassType.getActualTypeArguments()[ superClassTypeResult.getIndex()]);
static Class<?> getMessageType(MessageHandler listener) { return Util.getGenericType(MessageHandler.class, listener.getClass()).getClazz(); }
MessageHandlerResult result = new MessageHandlerResult( whole ? new PojoMessageHandlerWholeBinary(listener, getOnMessageMethod(listener), session, endpointConfig, matchDecoders(target, endpointConfig, true), new Object[1], 0, true, -1, false, -1) : new PojoMessageHandlerPartialBinary(listener, getOnMessagePartialMethod(listener), session, new Object[2], 0, true, 1, -1, -1), MessageHandlerResultType.BINARY); MessageHandlerResult result = new MessageHandlerResult( new PojoMessageHandlerWholeBinary(listener, getOnMessageMethod(listener), session, endpointConfig, matchDecoders(target, endpointConfig, true), new Object[1], 0, true, -1, true, -1), MessageHandlerResultType.BINARY); MessageHandlerResult result = new MessageHandlerResult( new PojoMessageHandlerWholeText(listener, getOnMessageMethod(listener), session, endpointConfig, matchDecoders(target, endpointConfig, false), new Object[1], 0, true, -1, -1), MessageHandlerResultType.TEXT); DecoderMatch decoderMatch = matchDecoders(target, endpointConfig); Method m = getOnMessageMethod(listener); if (decoderMatch.getBinaryDecoders().size() > 0) { MessageHandlerResult result = new MessageHandlerResult(
protected void setEncoders(EndpointConfig endpointConfig) throws DeploymentException { encoderEntries.clear(); for (Class<? extends Encoder> encoderClazz : endpointConfig.getEncoders()) { Encoder instance; try { instance = encoderClazz.newInstance(); instance.init(endpointConfig); } catch (InstantiationException | IllegalAccessException e) { throw new DeploymentException( sm.getString("wsRemoteEndpoint.invalidEncoder", encoderClazz.getName()), e); } EncoderEntry entry = new EncoderEntry( Util.getEncoderType(encoderClazz), instance); encoderEntries.add(entry); } }
Set<MessageHandlerResult> mhResults = Util.getMessageHandlers(target, listener, endpointConfig, this);