SessionArgumentResolver.java

package sprout.server.argument.builtins;

import sprout.beans.annotation.Component;
import sprout.server.websocket.InvocationContext;
import sprout.server.argument.WebSocketArgumentResolver;
import sprout.server.argument.annotation.SocketSession;
import sprout.server.websocket.WebSocketSession;

import java.lang.reflect.Parameter;

@Component
public class SessionArgumentResolver implements WebSocketArgumentResolver {
    @Override
    public boolean supports(Parameter parameter, InvocationContext context) {
        return (WebSocketSession.class.isAssignableFrom(parameter.getType()) && context.session() != null) || (parameter.isAnnotationPresent(SocketSession.class) && context.session() != null);
    }

    @Override
    public Object resolve(Parameter parameter, InvocationContext context) {
        return context.session();
    }
}