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

com.blade.mvc.route.Route Maven / Gradle / Ivy

There is a newer version: 2.0.15.RELEASE
Show newest version
package com.blade.mvc.route;

import com.blade.kit.PathKit;
import com.blade.mvc.http.HttpMethod;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * Route Bean
 * 

* A route identifies the smallest unit of the request, * which encapsulates the path of the request, * the Http method, and the method of executing the route * * @author biezhi * @since 1.5 */ @Builder @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode public class Route { /** * HTTP Request Method */ private HttpMethod httpMethod; /** * Route path */ private String path; /** * Logical controller object */ private Object target; /** * PathKit Class EventType */ private Class targetType; /** * Implementation logic controller method */ private Method action; @Builder.Default private int sort = Integer.MAX_VALUE; /** * Url path params */ private Map pathParams = new HashMap<>(8); public Route(HttpMethod httpMethod, String path, Class targetType, Method action) { super(); this.httpMethod = httpMethod; this.path = PathKit.fixPath(path); this.targetType = targetType; this.action = action; sort = Integer.MAX_VALUE; } public Route(HttpMethod httpMethod, String path, Object target, Class targetType, Method action) { super(); this.httpMethod = httpMethod; this.path = PathKit.fixPath(path); this.target = target; this.targetType = targetType; this.action = action; sort = Integer.MAX_VALUE; } /** * Return http method * * @return HttpMethod */ public HttpMethod getHttpMethod() { return httpMethod; } /** * Return route path * * @return path string */ public String getPath() { return path; } /** * Set route path * * @param path string path */ public void setPath(String path) { this.path = path; } /** * Return route controller instance * * @return route handler instance */ public Object getTarget() { return target; } /** * Set route handler instance * * @param target target bean */ public void setTarget(Object target) { this.target = target; } /** * Return route method * * @return route Method */ public Method getAction() { return action; } /** * Get route handler type * * @return return target type */ public Class getTargetType() { return targetType; } /** * Get route path parameters * * @return return path params */ public Map getPathParams() { return pathParams; } /** * Set path params * * @param pathParams path params map */ public void setPathParams(Map pathParams) { this.pathParams = pathParams; } /** * Get route execution sort, default is Integer.MAX_VALUE * * @return return sort */ public int getSort() { return sort; } /** * Set route execution sort * * @param sort sort number */ public void setSort(int sort) { this.sort = sort; } public String getAllPath() { return this.path + "#" + this.httpMethod.name(); } /** * Route to string * * @return return route string */ @Override public String toString() { return httpMethod + "\t" + path; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy