Package org.zanata.rest

Source Code of org.zanata.rest.ZanataRestVersionInterceptor

package org.zanata.rest;

import static org.jboss.seam.ScopeType.APPLICATION;

import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

import org.jboss.resteasy.annotations.interception.HeaderDecoratorPrecedence;
import org.jboss.resteasy.annotations.interception.ServerInterceptor;
import org.jboss.resteasy.core.ResourceMethod;
import org.jboss.resteasy.core.ServerResponse;
import org.jboss.resteasy.spi.Failure;
import org.jboss.resteasy.spi.HttpRequest;
import org.jboss.resteasy.spi.interception.PreProcessInterceptor;
import org.zanata.service.impl.VersionManager;
import org.zanata.util.ServiceLocator;
import org.zanata.util.VersionUtility;

@ServerInterceptor
@HeaderDecoratorPrecedence
public class ZanataRestVersionInterceptor implements PreProcessInterceptor {
    @Override
    public ServerResponse
            preProcess(HttpRequest request, ResourceMethod method)
                    throws Failure, WebApplicationException {
        String clientApiVer =
                request.getHttpHeaders().getRequestHeaders()
                        .getFirst(RestConstant.HEADER_VERSION_NO);
        String serverApiVer = VersionUtility.getAPIVersionInfo().getVersionNo();
        VersionManager verManager =
                ServiceLocator.instance().getInstance(VersionManager.class);

        return verManager.checkVersion(clientApiVer, serverApiVer) ? null
                : ServerResponse
                        .copyIfNotServerResponse(Response
                                .status(Status.PRECONDITION_FAILED)
                                .entity("Client API Version '"
                                        + clientApiVer
                                        + "'  and Server API Version '"
                                        + serverApiVer
                                        + "' do not match. Please update your Zanata client")
                                .build());
    }

}
TOP

Related Classes of org.zanata.rest.ZanataRestVersionInterceptor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.