001/** 002 * Copyright (c) 2015-2022, Michael Yang 杨福海 (fuhai999@gmail.com). 003 * <p> 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * <p> 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * <p> 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package io.jboot.web.controller; 017 018import io.jboot.aop.InterceptorBuilder; 019import io.jboot.aop.Interceptors; 020import io.jboot.aop.annotation.AutoLoad; 021import io.jboot.web.controller.annotation.*; 022 023import java.lang.reflect.Method; 024import java.util.HashSet; 025import java.util.Set; 026 027@AutoLoad 028public class RequestMethodLimitInterceptorBuilder implements InterceptorBuilder { 029 030 031 @Override 032 public void build(Class<?> targetClass, Method method, Interceptors interceptors) { 033 if (Util.isController(targetClass)) { 034 035 Set<String> supportMethods = new HashSet<>(); 036 037 if (Util.hasAnnotation(method, GetRequest.class)) { 038 supportMethods.add("GET"); 039 } 040 if (Util.hasAnnotation(method, PostRequest.class)) { 041 supportMethods.add("POST"); 042 } 043 if (Util.hasAnnotation(method, PutRequest.class)) { 044 supportMethods.add("PUT"); 045 } 046 if (Util.hasAnnotation(method, DeleteRequest.class)) { 047 supportMethods.add("DELETE"); 048 } 049 if (Util.hasAnnotation(method, PatchRequest.class)) { 050 supportMethods.add("PATCH"); 051 } 052 053 if (!supportMethods.isEmpty()) { 054 interceptors.add(new RequestMethodLimitInterceptor(supportMethods)); 055 } 056 } 057 } 058}