/** * Copyright (c) 2015, biezhi 王爵 (biezhi.me@gmail.com) * <p> * 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 * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * 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 com.blade.mvc.route; import com.blade.mvc.http.HttpMethod; import com.blade.mvc.http.Path; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; /** * Route Bean * * @author <a href="mailto:biezhi.me@gmail.com" target="_blank">biezhi</a> * @since 1.5 */ public class Route { /** * HTTP Request Method */ private HttpMethod httpMethod; /** * Route path */ private String path; /** * Logical controller object */ private Object target; /** * Controller Class Type */ private Class<?> targetType; /** * Implementation logic controller method */ private Method action; /** * Url path params */ private Map<String, String> pathParams = new HashMap<>(); public Route() { } public Route(HttpMethod httpMethod, String path, Class<?> targetType, Method action) { super(); this.httpMethod = httpMethod; this.path = Path.fixPath(path); this.targetType = targetType; this.action = action; } public Route(HttpMethod httpMethod, String path, Object target, Class<?> targetType, Method action) { super(); this.httpMethod = httpMethod; this.path = Path.fixPath(path); this.target = target; this.targetType = targetType; this.action = action; } public HttpMethod getHttpMethod() { return httpMethod; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public Object getTarget() { return target; } public void setTarget(Object target) { this.target = target; } public Method getAction() { return action; } public Class<?> getTargetType() { return targetType; } public Map<String, String> getPathParams() { return pathParams; } public void setPathParams(Map<String, String> pathParams) { this.pathParams = pathParams; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Route route = (Route) o; if (httpMethod != route.httpMethod) return false; if (path != null ? !path.equals(route.path) : route.path != null) return false; if (target != null ? !target.equals(route.target) : route.target != null) return false; if (targetType != null ? !targetType.equals(route.targetType) : route.targetType != null) return false; if (action != null ? !action.equals(route.action) : route.action != null) return false; return pathParams != null ? pathParams.equals(route.pathParams) : route.pathParams == null; } @Override public int hashCode() { int result = httpMethod != null ? httpMethod.hashCode() : 0; result = 31 * result + (path != null ? path.hashCode() : 0); result = 31 * result + (target != null ? target.hashCode() : 0); result = 31 * result + (targetType != null ? targetType.hashCode() : 0); result = 31 * result + (action != null ? action.hashCode() : 0); result = 31 * result + (pathParams != null ? pathParams.hashCode() : 0); return result; } @Override public String toString() { return httpMethod + "\t" + path; } }