All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.visallo.web.parameterProviders.ActiveWorkspaceIdParameterProviderFactory Maven / Gradle / Ivy

There is a newer version: 2.2.0
Show newest version
package org.visallo.web.parameterProviders;

import com.google.inject.Inject;
import com.v5analytics.webster.HandlerChain;
import com.v5analytics.webster.parameterProviders.ParameterProvider;
import com.v5analytics.webster.parameterProviders.ParameterProviderFactory;
import org.visallo.core.config.Configuration;
import org.visallo.core.model.user.UserRepository;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

import static com.google.common.base.Preconditions.checkNotNull;

public class ActiveWorkspaceIdParameterProviderFactory extends ParameterProviderFactory {
    private final ParameterProvider requiredParameterProvider;
    private final ParameterProvider notRequiredParameterProvider;

    @Inject
    public ActiveWorkspaceIdParameterProviderFactory(UserRepository userRepository, Configuration configuration) {
        requiredParameterProvider = new VisalloBaseParameterProvider(userRepository, configuration) {
            @Override
            public String getParameter(HttpServletRequest request, HttpServletResponse response, HandlerChain chain) {
                return getActiveWorkspaceId(request);
            }
        };
        notRequiredParameterProvider = new VisalloBaseParameterProvider(userRepository, configuration) {
            @Override
            public String getParameter(HttpServletRequest request, HttpServletResponse response, HandlerChain chain) {
                return getActiveWorkspaceIdOrDefault(request);
            }
        };
    }

    @Override
    public boolean isHandled(Method handleMethod, Class parameterType, Annotation[] parameterAnnotations) {
        return getActiveWorkspaceIdAnnotation(parameterAnnotations) != null;
    }

    @Override
    public ParameterProvider createParameterProvider(Method handleMethod, Class parameterType, Annotation[] parameterAnnotations) {
        ActiveWorkspaceId activeWorkspaceIdAnnotation = getActiveWorkspaceIdAnnotation(parameterAnnotations);
        checkNotNull(activeWorkspaceIdAnnotation, "cannot find " + ActiveWorkspaceId.class.getName());
        if (activeWorkspaceIdAnnotation.required()) {
            return requiredParameterProvider;
        } else {
            return notRequiredParameterProvider;
        }
    }

    private static ActiveWorkspaceId getActiveWorkspaceIdAnnotation(Annotation[] annotations) {
        for (Annotation annotation : annotations) {
            if (annotation instanceof ActiveWorkspaceId) {
                return (ActiveWorkspaceId) annotation;
            }
        }
        return null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy