001/* 002Copyright 2022 The OpenFunction Authors. 003 004Licensed under the Apache License, Version 2.0 (the "License"); 005you may not use this file except in compliance with the License. 006You may obtain a copy of the License at 007 008 http://www.apache.org/licenses/LICENSE-2.0 009 010Unless required by applicable law or agreed to in writing, software 011distributed under the License is distributed on an "AS IS" BASIS, 012WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013See the License for the specific language governing permissions and 014limitations under the License. 015*/ 016 017package dev.openfunction.functions; 018 019import java.util.Map; 020 021public interface Hook { 022 /** 023 * name return the name of this plugin. 024 * 025 * @return Plugin name 026 */ 027 String name(); 028 029 /** 030 * version return the version of this plugin. 031 * 032 * @return Plugin name 033 */ 034 String version(); 035 036 /** 037 * init will create a new plugin, and execute hook in this calling. 038 * If you do not want to use a new plugin to execute hook, just return `this`. 039 * 040 * @return Plugin 041 */ 042 Hook init(); 043 044 /** 045 * execute executes the hook. 046 * 047 * @param ctx Runtime context 048 * @return error 049 */ 050 Error execute(Context ctx); 051 052 Boolean needToTracing(); 053 054 Map<String, String> tagsAddToTracing(); 055}