/* * Copyright 2015 Petr Bouda * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ package org.joyrest.routing; import org.joyrest.model.http.HttpMethod; import org.joyrest.model.request.Request; import org.joyrest.model.response.Response; import org.joyrest.processor.RequestProcessor; import org.joyrest.routing.entity.RequestCollectionType; import org.joyrest.routing.entity.RequestType; import org.joyrest.routing.entity.ResponseCollectionType; import org.joyrest.routing.entity.ResponseType; /** * <p> * Class {@link TypedControllerConfiguration} is abstract implementation of {@link ControllerConfiguration} and makes easier to * create the * given route using predefined protected method. * </p> * <p> * It can be considered as container for routes which are provided to {@link RequestProcessor} because of processing and * handling incoming * requests. * </p> * * @author pbouda * @see ControllerConfiguration * @see AbstractControllerConfiguration * @see Route */ public abstract class TypedControllerConfiguration extends AbstractControllerConfiguration { /* --------------- POST ROUTES --------------- */ protected final <REQ, RESP> Route post(RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.POST, "", action, req, resp); } protected final <REQ, RESP> Route post(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.POST, path, action, req, resp); } protected final <REQ, RESP> Route post(RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.POST, "", action, req, resp); } protected final <REQ, RESP> Route post(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.POST, path, action, req, resp); } protected final <REQ, RESP> Route post(RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.POST, "", action, req, resp); } protected final <REQ, RESP> Route post(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.POST, path, action, req, resp); } protected final <REQ, RESP> Route post(RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.POST, "", action, req, resp); } protected final <REQ, RESP> Route post(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.POST, path, action, req, resp); } protected final <REQ> Route post(RouteAction<Request<REQ>, Response<?>> action, RequestType<REQ> req) { return createEntityRoute(HttpMethod.POST, "", action, req, null); } protected final <REQ> Route post(String path, RouteAction<Request<REQ>, Response<?>> action, RequestType<REQ> req) { return createEntityRoute(HttpMethod.POST, path, action, req, null); } protected final <RESP> Route post(RouteAction<Request<?>, Response<RESP>> action, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.POST, "", action, null, resp); } protected final <RESP> Route post(String path, RouteAction<Request<?>, Response<RESP>> action, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.POST, path, action, null, resp); } protected final <REQ> Route post(RouteAction<Request<REQ>, Response<?>> action, RequestCollectionType<REQ> req) { return createEntityRoute(HttpMethod.POST, "", action, req, null); } protected final <REQ> Route post(String path, RouteAction<Request<REQ>, Response<?>> action, RequestCollectionType<REQ> req) { return createEntityRoute(HttpMethod.POST, path, action, req, null); } protected final <RESP> Route post(RouteAction<Request<?>, Response<RESP>> action, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.POST, "", action, null, resp); } protected final <RESP> Route post(String path, RouteAction<Request<?>, Response<RESP>> action, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.POST, path, action, null, resp); } protected final Route post(RouteAction<Request<?>, Response<?>> action) { return createEntityRoute(HttpMethod.POST, "", action, null, null); } protected final Route post(String path, RouteAction<Request<?>, Response<?>> action) { return createEntityRoute(HttpMethod.POST, path, action, null, null); } /* ---------------- GET ROUTES ---------------- */ protected final <REQ, RESP> Route get(RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.GET, "", action, req, resp); } protected final <REQ, RESP> Route get(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.GET, path, action, req, resp); } protected final <REQ, RESP> Route get(RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.GET, "", action, req, resp); } protected final <REQ, RESP> Route get(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.GET, path, action, req, resp); } protected final <REQ, RESP> Route get(RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.GET, "", action, req, resp); } protected final <REQ, RESP> Route get(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.GET, path, action, req, resp); } protected final <REQ, RESP> Route get(RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.GET, "", action, req, resp); } protected final <REQ, RESP> Route get(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.GET, path, action, req, resp); } protected final <REQ> Route get(RouteAction<Request<REQ>, Response<?>> action, RequestType<REQ> req) { return createEntityRoute(HttpMethod.GET, "", action, req, null); } protected final <REQ> Route get(String path, RouteAction<Request<REQ>, Response<?>> action, RequestType<REQ> req) { return createEntityRoute(HttpMethod.GET, path, action, req, null); } protected final <RESP> Route get(RouteAction<Request<?>, Response<RESP>> action, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.GET, "", action, null, resp); } protected final <RESP> Route get(String path, RouteAction<Request<?>, Response<RESP>> action, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.GET, path, action, null, resp); } protected final <REQ> Route get(RouteAction<Request<REQ>, Response<?>> action, RequestCollectionType<REQ> req) { return createEntityRoute(HttpMethod.GET, "", action, req, null); } protected final <REQ> Route get(String path, RouteAction<Request<REQ>, Response<?>> action, RequestCollectionType<REQ> req) { return createEntityRoute(HttpMethod.GET, path, action, req, null); } protected final <RESP> Route get(RouteAction<Request<?>, Response<RESP>> action, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.GET, "", action, null, resp); } protected final <RESP> Route get(String path, RouteAction<Request<?>, Response<RESP>> action, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.GET, path, action, null, resp); } protected final Route get(RouteAction<Request<?>, Response<?>> action) { return createEntityRoute(HttpMethod.GET, "", action, null, null); } protected final Route get(String path, RouteAction<Request<?>, Response<?>> action) { return createEntityRoute(HttpMethod.GET, path, action, null, null); } /* ---------------- PUT ROUTES ---------------- */ protected final <REQ, RESP> Route put(RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, "", action, req, resp); } protected final <REQ, RESP> Route put(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, path, action, req, resp); } protected final <REQ, RESP> Route put(RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, "", action, req, resp); } protected final <REQ, RESP> Route put(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, path, action, req, resp); } protected final <REQ, RESP> Route put(RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, "", action, req, resp); } protected final <REQ, RESP> Route put(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestCollectionType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, path, action, req, resp); } protected final <REQ, RESP> Route put(RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, "", action, req, resp); } protected final <REQ, RESP> Route put(String path, RouteAction<Request<REQ>, Response<RESP>> action, RequestType<REQ> req, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, path, action, req, resp); } protected final <REQ> Route put(RouteAction<Request<REQ>, Response<?>> action, RequestType<REQ> req) { return createEntityRoute(HttpMethod.PUT, "", action, req, null); } protected final <REQ> Route put(String path, RouteAction<Request<REQ>, Response<?>> action, RequestType<REQ> req) { return createEntityRoute(HttpMethod.PUT, path, action, req, null); } protected final <RESP> Route put(RouteAction<Request<?>, Response<RESP>> action, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, "", action, null, resp); } protected final <RESP> Route put(String path, RouteAction<Request<?>, Response<RESP>> action, ResponseType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, path, action, null, resp); } protected final <REQ> Route put(RouteAction<Request<REQ>, Response<?>> action, RequestCollectionType<REQ> req) { return createEntityRoute(HttpMethod.PUT, "", action, req, null); } protected final <REQ> Route put(String path, RouteAction<Request<REQ>, Response<?>> action, RequestCollectionType<REQ> req) { return createEntityRoute(HttpMethod.PUT, path, action, req, null); } protected final <RESP> Route put(RouteAction<Request<?>, Response<RESP>> action, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, "", action, null, resp); } protected final <RESP> Route put(String path, RouteAction<Request<?>, Response<RESP>> action, ResponseCollectionType<RESP> resp) { return createEntityRoute(HttpMethod.PUT, path, action, null, resp); } protected final Route put(RouteAction<Request<?>, Response<?>> action) { return createEntityRoute(HttpMethod.PUT, "", action, null, null); } protected final Route put(String path, RouteAction<Request<?>, Response<?>> action) { return createEntityRoute(HttpMethod.PUT, path, action, null, null); } /* ------------------ DELETE ROUTES ------------------ */ protected final <REQ, RESP> Route delete(RouteAction<Request<REQ>, Response<RESP>> action) { return createEntityRoute(HttpMethod.DELETE, "", action, null, null); } protected final <REQ, RESP> Route delete(String path, RouteAction<Request<REQ>, Response<RESP>> action) { return createEntityRoute(HttpMethod.DELETE, path, action, null, null); } protected final <REQ> Route delete(String path, RouteAction<Request<REQ>, Response<?>> action, RequestType<REQ> req) { return createEntityRoute(HttpMethod.DELETE, path, action, req, null); } }