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

org.restler.spring.mvc.SpringMvc Maven / Gradle / Ivy

There is a newer version: 0.5.1
Show newest version
package org.restler.spring.mvc;

import net.sf.cglib.proxy.InvocationHandler;
import org.restler.client.*;
import org.restler.http.HttpCallExecutor;
import org.restler.http.RequestExecutor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RestController;

import java.net.URI;
import java.util.List;

public class SpringMvc extends DefaultCoreModule {

    private final CallExecutionChain chain;
    private final URI baseUri;
    private final ParameterResolver parameterResolver;

    public SpringMvc(ClientFactory factory, RequestExecutor requestExecutor, List enhancers, URI baseUri, ParameterResolver parameterResolver) {
        super(factory);
        HttpCallExecutor callExecutor = new HttpCallExecutor(requestExecutor);
        chain = new CallExecutionChain(callExecutor, enhancers);
        this.baseUri = baseUri;
        this.parameterResolver = parameterResolver;
    }

    @Override
    public boolean canHandle(ServiceDescriptor descriptor) {
        if (!(descriptor instanceof ClassServiceDescriptor)) {
            return false;
        }

        Class controllerClass = ((ClassServiceDescriptor) descriptor).getServiceDescriptor();

        return AnnotationUtils.isAnnotated(controllerClass, Controller.class) ||
                AnnotationUtils.isAnnotated(controllerClass, RestController.class);
    }

    @Override
    protected InvocationHandler createHandler(ServiceDescriptor descriptor) {

        return new CallExecutorInvocationHandler(chain, new SpringMvcMethodInvocationMapper(baseUri, parameterResolver));
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy