diff --git a/build.gradle b/build.gradle index ec8bc4a458..424c9cc004 100644 --- a/build.gradle +++ b/build.gradle @@ -569,7 +569,8 @@ subprojects { dependency "org.projectlombok:lombok:1.18.22" dependency "com.github.seancfoley:ipaddress:5.3.3" dependency "javax.annotation:javax.annotation-api:1.3.2" - dependency "com.alibaba:fastjson:1.2.83" + dependency "com.alibaba:fastjson:1.2.83" // TODO migrate to fastjson2 + dependency "com.alibaba.fastjson2:fastjson2:2.0.48" dependency "software.amazon.awssdk:s3:2.20.29" dependency "com.github.rholder:guava-retrying:2.0.0" diff --git a/eventmesh-common/build.gradle b/eventmesh-common/build.gradle index fd7a6e1ee6..a6dc2cd269 100644 --- a/eventmesh-common/build.gradle +++ b/eventmesh-common/build.gradle @@ -30,6 +30,8 @@ dependencies { api "io.cloudevents:cloudevents-core" api "io.cloudevents:cloudevents-json-jackson" + api "com.alibaba.fastjson2:fastjson2" + implementation "org.apache.logging.log4j:log4j-api" implementation "org.apache.logging.log4j:log4j-core" implementation "org.apache.logging.log4j:log4j-slf4j2-impl" diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java index 338edf3536..c7465d32c8 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/CommonConfiguration.java @@ -37,82 +37,82 @@ @Config(prefix = "eventMesh") public class CommonConfiguration { - @ConfigFiled(field = "sysid", beNumber = true, notEmpty = true) + @ConfigField(field = "sysid", beNumber = true, notEmpty = true) private String sysID = "5477"; - @ConfigFiled(field = "server.env", notEmpty = true) + @ConfigField(field = "server.env", notEmpty = true) private String eventMeshEnv = "P"; - @ConfigFiled(field = "server.idc", notEmpty = true) + @ConfigField(field = "server.idc", notEmpty = true) private String eventMeshIDC = "FT"; - @ConfigFiled(field = "server.name", notEmpty = true) + @ConfigField(field = "server.name", notEmpty = true) private String eventMeshName = ""; - @ConfigFiled(field = "server.cluster", notEmpty = true) + @ConfigField(field = "server.cluster", notEmpty = true) private String eventMeshCluster = "LS"; - @ConfigFiled(field = "server.hostIp", reload = true) + @ConfigField(field = "server.hostIp", reload = true) private String eventMeshServerIp = null; - @ConfigFiled(field = "metaStorage.plugin.server-addr", notEmpty = true) + @ConfigField(field = "metaStorage.plugin.server-addr", notEmpty = true) private String metaStorageAddr = ""; - @ConfigFiled(field = "metaStorage.plugin.type", notEmpty = true) + @ConfigField(field = "metaStorage.plugin.type", notEmpty = true) private String eventMeshMetaStoragePluginType = "nacos"; - @ConfigFiled(field = "metaStorage.plugin.username") + @ConfigField(field = "metaStorage.plugin.username") private String eventMeshMetaStoragePluginUsername = ""; - @ConfigFiled(field = "metaStorage.plugin.password") + @ConfigField(field = "metaStorage.plugin.password") private String eventMeshMetaStoragePluginPassword = ""; - @ConfigFiled(field = "metaStorage.plugin.metaStorageIntervalInMills") + @ConfigField(field = "metaStorage.plugin.metaStorageIntervalInMills") private Integer eventMeshMetaStorageIntervalInMills = 10 * 1000; - @ConfigFiled(field = "metaStorage.plugin.fetchMetaStorageAddrIntervalInMills") + @ConfigField(field = "metaStorage.plugin.fetchMetaStorageAddrIntervalInMills") private Integer eventMeshFetchMetaStorageAddrInterval = 10 * 1000; - @ConfigFiled(field = "metaStorage.plugin.enabled") + @ConfigField(field = "metaStorage.plugin.enabled") private boolean eventMeshServerMetaStorageEnable = false; - @ConfigFiled(field = "trace.plugin", notEmpty = true) + @ConfigField(field = "trace.plugin", notEmpty = true) private String eventMeshTracePluginType; - @ConfigFiled(field = "metrics.plugin", notEmpty = true) + @ConfigField(field = "metrics.plugin", notEmpty = true) private List eventMeshMetricsPluginType; - @ConfigFiled(field = "security.plugin.type", notEmpty = true) + @ConfigField(field = "security.plugin.type", notEmpty = true) private String eventMeshSecurityPluginType = "security"; - @ConfigFiled(field = "connector.plugin.type", notEmpty = true) + @ConfigField(field = "connector.plugin.type", notEmpty = true) private String eventMeshConnectorPluginType = "rocketmq"; - @ConfigFiled(field = "storage.plugin.type", notEmpty = true) + @ConfigField(field = "storage.plugin.type", notEmpty = true) private String eventMeshStoragePluginType = "rocketmq"; - @ConfigFiled(field = "security.validation.type.token", notEmpty = true) + @ConfigField(field = "security.validation.type.token", notEmpty = true) private boolean eventMeshSecurityValidateTypeToken = false; - @ConfigFiled(field = "server.trace.enabled") + @ConfigField(field = "server.trace.enabled") private boolean eventMeshServerTraceEnable = false; - @ConfigFiled(field = "server.security.enabled") + @ConfigField(field = "server.security.enabled") private boolean eventMeshServerSecurityEnable = false; - @ConfigFiled(field = "security.publickey") + @ConfigField(field = "security.publickey") private String eventMeshSecurityPublickey = ""; - @ConfigFiled(field = "server.provide.protocols", reload = true) + @ConfigField(field = "server.provide.protocols", reload = true) private List eventMeshProvideServerProtocols; - @ConfigFiled(reload = true) + @ConfigField(reload = true) private String eventMeshWebhookOrigin; - @ConfigFiled(reload = true) + @ConfigField(reload = true) private String meshGroup; - @ConfigFiled(field = "server.retry.plugin.type") + @ConfigField(field = "server.retry.plugin.type") private String eventMeshRetryPluginType = Constants.DEFAULT; public void reload() { diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigFiled.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigField.java similarity index 98% rename from eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigFiled.java rename to eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigField.java index d7c398e2db..aecdf23003 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigFiled.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigField.java @@ -29,7 +29,7 @@ */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.FIELD}) -public @interface ConfigFiled { +public @interface ConfigField { /** * @return The key name of the configuration file diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConvertValue.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConvertValue.java index e3870759d0..8b1372199e 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConvertValue.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConvertValue.java @@ -17,7 +17,7 @@ package org.apache.eventmesh.common.config.convert; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import org.apache.commons.lang3.StringUtils; @@ -44,7 +44,7 @@ default boolean canHandleNullValue() { /** * @return The value converter needs */ - default Object processFieldValue(ConvertInfo convertInfo, String key, ConfigFiled configFiled) { + default Object processFieldValue(ConvertInfo convertInfo, String key, ConfigField configField) { Properties properties = convertInfo.getProperties(); String value = properties.getProperty(key); @@ -54,14 +54,14 @@ default Object processFieldValue(ConvertInfo convertInfo, String key, ConfigFile value = value.trim(); - boolean findEnv = configFiled.findEnv(); - String fieldName = configFiled.field(); + boolean findEnv = configField.findEnv(); + String fieldName = configField.field(); if (StringUtils.isBlank(value) && !StringUtils.isBlank(fieldName) && findEnv) { value = Optional.ofNullable(System.getProperty(fieldName)).orElse(System.getenv(fieldName)); } - if (StringUtils.isBlank(value) && configFiled.notEmpty()) { + if (StringUtils.isBlank(value) && configField.notEmpty()) { throw new RuntimeException(key + " can't be empty!"); } diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConverterMap.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConverterMap.java index 1fa1bced57..48d8c83ee8 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConverterMap.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/ConverterMap.java @@ -17,7 +17,7 @@ package org.apache.eventmesh.common.config.convert; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import org.apache.eventmesh.common.config.convert.converter.BaseDataTypeConverter; import org.apache.eventmesh.common.config.convert.converter.DateConverter; import org.apache.eventmesh.common.config.convert.converter.EnumConverter; @@ -96,9 +96,9 @@ public static void register(ConvertValue convertValue, Class... clazzs) { */ public static ConvertValue getFieldConverter(Field field) { Class clazz = field.getType(); - ConfigFiled configFiled = field.getAnnotation(ConfigFiled.class); + ConfigField configField = field.getAnnotation(ConfigField.class); - Class converter1 = configFiled.converter(); + Class converter1 = configField.converter(); if (!converter1.equals(ConvertValue.DefaultConverter.class)) { if (!classToConverter.containsKey(converter1)) { try { diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/ObjectConverter.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/ObjectConverter.java index 6e118851e2..3c91ee0692 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/ObjectConverter.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/ObjectConverter.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.common.config.convert.converter; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import org.apache.eventmesh.common.config.ConfigInfo; import org.apache.eventmesh.common.config.convert.ConvertInfo; import org.apache.eventmesh.common.config.convert.ConvertValue; @@ -110,18 +110,18 @@ private void setValue() throws Exception { field.setAccessible(true); ConvertInfo convertInfo = this.convertInfo; - ConfigFiled configFiled = field.getAnnotation(ConfigFiled.class); - if (Objects.isNull(configFiled)) { + ConfigField configField = field.getAnnotation(ConfigField.class); + if (Objects.isNull(configField)) { continue; } - String key = this.buildKey(configFiled); - needReload = this.checkNeedReload(needReload, configFiled); + String key = this.buildKey(configField); + needReload = this.checkNeedReload(needReload, configField); ConvertValue convertValue = ConverterMap.getFieldConverter(field); - Object fieldValue = convertValue.processFieldValue(convertInfo, key, configFiled); + Object fieldValue = convertValue.processFieldValue(convertInfo, key, configField); - if (!checkFieldValueBefore(configFiled, key, convertValue, fieldValue)) { + if (!checkFieldValueBefore(configField, key, convertValue, fieldValue)) { continue; } convertInfo.setValue(fieldValue); @@ -129,7 +129,7 @@ private void setValue() throws Exception { convertInfo.setKey(key); Object convertedValue = convertValue.convert(convertInfo); - if (!checkFieldValueAfter(configFiled, key, convertedValue)) { + if (!checkFieldValueAfter(configField, key, convertedValue)) { continue; } field.set(object, convertedValue); @@ -155,16 +155,16 @@ private void reloadConfigIfNeed(boolean needReload) throws NoSuchMethodException } } - private boolean checkFieldValueAfter(ConfigFiled configFiled, String key, Object convertedValue) { + private boolean checkFieldValueAfter(ConfigField configField, String key, Object convertedValue) { if (Objects.isNull(convertedValue)) { - if (configFiled.notNull()) { + if (configField.notNull()) { throw new RuntimeException(key + " can not be null!"); } return false; } - if (configFiled.beNumber()) { + if (configField.beNumber()) { if (!StringUtils.isNumeric(String.valueOf(convertedValue))) { throw new RuntimeException(key + " must be number!"); } @@ -173,9 +173,9 @@ private boolean checkFieldValueAfter(ConfigFiled configFiled, String key, Object return true; } - private boolean checkFieldValueBefore(ConfigFiled configFiled, String key, ConvertValue convertValue, Object fieldValue) { + private boolean checkFieldValueBefore(ConfigField configField, String key, ConvertValue convertValue, Object fieldValue) { if (Objects.isNull(fieldValue) && !convertValue.canHandleNullValue()) { - if (configFiled.notNull()) { + if (configField.notNull()) { throw new RuntimeException(key + " can not be null!"); } @@ -185,8 +185,8 @@ private boolean checkFieldValueBefore(ConfigFiled configFiled, String key, Conve return true; } - private boolean checkNeedReload(boolean needReload, ConfigFiled configFiled) { - if (!needReload && configFiled != null && configFiled.reload()) { + private boolean checkNeedReload(boolean needReload, ConfigField configField) { + if (!needReload && configField != null && configField.reload()) { needReload = Boolean.TRUE; } @@ -201,14 +201,14 @@ private boolean checkNeedReload(boolean needReload, ConfigFiled configFiled) { return needReload; } - private String buildKey(ConfigFiled configFiled) { + private String buildKey(ConfigField configField) { String key; StringBuilder keyPrefix = new StringBuilder(Objects.isNull(prefix) ? "" : prefix); - if (configFiled == null || configFiled.field().isEmpty() && keyPrefix.length() > 0) { + if (configField == null || configField.field().isEmpty() && keyPrefix.length() > 0) { key = keyPrefix.deleteCharAt(keyPrefix.length() - 1).toString(); } else { - key = keyPrefix.append(configFiled.field()).toString(); + key = keyPrefix.append(configField.field()).toString(); } return key; diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/PropertiesConverter.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/PropertiesConverter.java index e4dbf470df..7c58fccdc3 100644 --- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/PropertiesConverter.java +++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/config/convert/converter/PropertiesConverter.java @@ -17,7 +17,7 @@ package org.apache.eventmesh.common.config.convert.converter; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import org.apache.eventmesh.common.config.convert.ConvertInfo; import org.apache.eventmesh.common.config.convert.ConvertValue; import org.apache.eventmesh.common.utils.PropertiesUtils; @@ -41,7 +41,7 @@ public Properties convert(ConvertInfo convertInfo) { } @Override - public Object processFieldValue(ConvertInfo convertInfo, String prefix, ConfigFiled configFiled) { + public Object processFieldValue(ConvertInfo convertInfo, String prefix, ConfigField configField) { Properties properties = convertInfo.getProperties(); if (StringUtils.isBlank(prefix)) { diff --git a/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/config/ConsulTLSConfig.java b/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/config/ConsulTLSConfig.java index 1664a014dd..f63e520861 100644 --- a/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/config/ConsulTLSConfig.java +++ b/eventmesh-meta/eventmesh-meta-consul/src/main/java/org/apache/eventmesh/meta/consul/config/ConsulTLSConfig.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.meta.consul.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import org.apache.eventmesh.common.config.convert.converter.EnumConverter; import com.ecwid.consul.transport.TLSConfig.KeyStoreInstanceType; @@ -31,19 +31,19 @@ @Config(prefix = "eventMesh.registry.consul.tls") public class ConsulTLSConfig { - @ConfigFiled(field = "keyStoreInstanceType", converter = EnumConverter.class) + @ConfigField(field = "keyStoreInstanceType", converter = EnumConverter.class) private KeyStoreInstanceType keyStoreInstanceType; - @ConfigFiled(field = "certificatePath") + @ConfigField(field = "certificatePath") private String certificatePath; - @ConfigFiled(field = "certificatePassword") + @ConfigField(field = "certificatePassword") private String certificatePassword; - @ConfigFiled(field = "keyStorePath") + @ConfigField(field = "keyStorePath") private String keyStorePath; - @ConfigFiled(field = "keyStorePassword") + @ConfigField(field = "keyStorePassword") private String keyStorePassword; } diff --git a/eventmesh-meta/eventmesh-meta-nacos/src/main/java/org/apache/eventmesh/meta/nacos/config/NacosMetaStorageConfiguration.java b/eventmesh-meta/eventmesh-meta-nacos/src/main/java/org/apache/eventmesh/meta/nacos/config/NacosMetaStorageConfiguration.java index 67e51d2d9e..d6de51ca8b 100644 --- a/eventmesh-meta/eventmesh-meta-nacos/src/main/java/org/apache/eventmesh/meta/nacos/config/NacosMetaStorageConfiguration.java +++ b/eventmesh-meta/eventmesh-meta-nacos/src/main/java/org/apache/eventmesh/meta/nacos/config/NacosMetaStorageConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.meta.nacos.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import com.alibaba.nacos.api.PropertyKeyConst; import com.alibaba.nacos.client.naming.utils.UtilAndComs; @@ -31,31 +31,31 @@ @Config(prefix = "eventMesh.metaStorage.nacos") public class NacosMetaStorageConfiguration { - @ConfigFiled(field = PropertyKeyConst.ENDPOINT) + @ConfigField(field = PropertyKeyConst.ENDPOINT) private String endpoint; - @ConfigFiled(field = PropertyKeyConst.ENDPOINT_PORT) + @ConfigField(field = PropertyKeyConst.ENDPOINT_PORT) private String endpointPort; - @ConfigFiled(field = PropertyKeyConst.ACCESS_KEY) + @ConfigField(field = PropertyKeyConst.ACCESS_KEY) private String accessKey; - @ConfigFiled(field = PropertyKeyConst.SECRET_KEY) + @ConfigField(field = PropertyKeyConst.SECRET_KEY) private String secretKey; - @ConfigFiled(field = PropertyKeyConst.CLUSTER_NAME) + @ConfigField(field = PropertyKeyConst.CLUSTER_NAME) private String clusterName; - @ConfigFiled(field = PropertyKeyConst.NAMESPACE) + @ConfigField(field = PropertyKeyConst.NAMESPACE) private String namespace; - @ConfigFiled(field = PropertyKeyConst.NAMING_POLLING_THREAD_COUNT) + @ConfigField(field = PropertyKeyConst.NAMING_POLLING_THREAD_COUNT) private Integer pollingThreadCount = Runtime.getRuntime().availableProcessors() / 2 + 1; - @ConfigFiled(field = UtilAndComs.NACOS_NAMING_LOG_NAME) + @ConfigField(field = UtilAndComs.NACOS_NAMING_LOG_NAME) private String logFileName; - @ConfigFiled(field = UtilAndComs.NACOS_NAMING_LOG_LEVEL) + @ConfigField(field = UtilAndComs.NACOS_NAMING_LOG_LEVEL) private String logLevel; } diff --git a/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/config/ZKRegistryConfiguration.java b/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/config/ZKRegistryConfiguration.java index bec8faae7e..7e6f743c89 100644 --- a/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/config/ZKRegistryConfiguration.java +++ b/eventmesh-meta/eventmesh-meta-zookeeper/src/main/java/org/apache/eventmesh/meta/zookeeper/config/ZKRegistryConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.meta.zookeeper.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import lombok.Data; import lombok.NoArgsConstructor; @@ -28,38 +28,38 @@ @Config(prefix = "eventMesh.registry.zookeeper") public class ZKRegistryConfiguration { - @ConfigFiled(field = "scheme") + @ConfigField(field = "scheme") private String scheme; - @ConfigFiled(field = "auth") + @ConfigField(field = "auth") private String auth; - @ConfigFiled(field = "connectionTimeoutMs") + @ConfigField(field = "connectionTimeoutMs") private Integer connectionTimeoutMs = 5000; - @ConfigFiled(field = "sessionTimeoutMs") + @ConfigField(field = "sessionTimeoutMs") private Integer sessionTimeoutMs = 40000; // Fully qualified name of RetryPolicy implementation - @ConfigFiled(field = "retryPolicy.class") + @ConfigField(field = "retryPolicy.class") private String retryPolicyClass; - @ConfigFiled(field = "retryPolicy.baseSleepTimeMs") + @ConfigField(field = "retryPolicy.baseSleepTimeMs") private Integer baseSleepTimeMs = 1000; - @ConfigFiled(field = "retryPolicy.maxRetries") + @ConfigField(field = "retryPolicy.maxRetries") private Integer maxRetries = 5; - @ConfigFiled(field = "retryPolicy.maxSleepTimeMs") + @ConfigField(field = "retryPolicy.maxSleepTimeMs") private Integer maxSleepTimeMs = 5000; - @ConfigFiled(field = "retryPolicy.retryIntervalMs") + @ConfigField(field = "retryPolicy.retryIntervalMs") private Integer retryIntervalTimeMs = 1000; - @ConfigFiled(field = "retryPolicy.nTimes") + @ConfigField(field = "retryPolicy.nTimes") private Integer retryNTimes = 10; - @ConfigFiled(field = "retryPolicy.sleepMsBetweenRetries") + @ConfigField(field = "retryPolicy.sleepMsBetweenRetries") private Integer sleepMsBetweenRetries = 1000; } diff --git a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/config/PrometheusConfiguration.java b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/config/PrometheusConfiguration.java index 63e5688302..e2d684f04b 100644 --- a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/config/PrometheusConfiguration.java +++ b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/config/PrometheusConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.metrics.prometheus.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import lombok.Data; @@ -26,6 +26,6 @@ @Config(prefix = "eventMesh.metrics.prometheus", path = "classPath://prometheus.properties") public class PrometheusConfiguration { - @ConfigFiled(field = "port") + @ConfigField(field = "port") private int eventMeshPrometheusPort = 19090; } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AbstractHttpHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AbstractHttpHandler.java index 30c81446c5..0b0a6afedf 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AbstractHttpHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AbstractHttpHandler.java @@ -18,99 +18,76 @@ package org.apache.eventmesh.runtime.admin.handler; import org.apache.eventmesh.common.enums.HttpMethod; +import org.apache.eventmesh.runtime.admin.response.Result; import org.apache.eventmesh.runtime.constants.EventMeshConstants; -import org.apache.eventmesh.runtime.util.HttpRequestUtil; import org.apache.eventmesh.runtime.util.HttpResponseUtils; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import io.netty.buffer.Unpooled; import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.http.DefaultFullHttpResponse; import io.netty.handler.codec.http.DefaultHttpHeaders; import io.netty.handler.codec.http.HttpHeaderValues; import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpResponse; import io.netty.handler.codec.http.HttpResponseStatus; -import io.netty.handler.codec.http.HttpVersion; -import io.netty.util.AsciiString; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONWriter; import lombok.Data; @Data public abstract class AbstractHttpHandler implements HttpHandler { - protected void write(ChannelHandlerContext ctx, byte[] result) { - ctx.writeAndFlush(HttpResponseUtils.getHttpResponse(result, ctx, HttpHeaderValues.TEXT_HTML)).addListener(ChannelFutureListener.CLOSE); - } - - protected void write(ChannelHandlerContext ctx, HttpResponse response) { - ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE); + protected void writeText(ChannelHandlerContext ctx, String text) { + HttpHeaders responseHeaders = HttpResponseUtils.buildDefaultHttpHeaders(HttpHeaderValues.TEXT_HTML); + write(ctx, HttpResponseUtils.buildHttpResponse(text, ctx, responseHeaders, HttpResponseStatus.OK)); } - protected void write(ChannelHandlerContext ctx, byte[] result, AsciiString headerValue, HttpResponseStatus httpResponseStatus) { - ctx.writeAndFlush(HttpResponseUtils.getHttpResponse(result, ctx, headerValue, httpResponseStatus)).addListener(ChannelFutureListener.CLOSE); + /** + * Return given JSON String with given {@link HttpResponseStatus}. + */ + protected void writeJson(ChannelHandlerContext ctx, String json, HttpResponseStatus status) { + HttpHeaders responseHeaders = HttpResponseUtils.buildDefaultHttpHeaders(HttpHeaderValues.APPLICATION_JSON); + write(ctx, HttpResponseUtils.buildHttpResponse(json, ctx, responseHeaders, status)); } - protected void write401(ChannelHandlerContext ctx) { - DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.UNAUTHORIZED); - ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE); + /** + * Return given JSON String with status {@link HttpResponseStatus#OK}. + */ + protected void writeJson(ChannelHandlerContext ctx, String json) { + writeJson(ctx, json, HttpResponseStatus.OK); } - protected void writeSuccess(ChannelHandlerContext ctx) { - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); - DefaultFullHttpResponse response = - new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.EMPTY_BUFFER, responseHeaders, responseHeaders); - ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE); + /** + * Serialize given data into the JSON String of {@link Result} and return with status {@link HttpResponseStatus#OK}. + */ + protected void writeSuccess(ChannelHandlerContext ctx, Object data) { + Result result = Result.success(data); + String json = JSON.toJSONString(result, JSONWriter.Feature.WriteNulls); + writeJson(ctx, json); } - protected void writeSuccess(ChannelHandlerContext ctx, DefaultHttpHeaders responseHeaders) { - DefaultFullHttpResponse response = - new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.EMPTY_BUFFER, responseHeaders, responseHeaders); - ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE); + /** + * Wrap given message to {@link Result} and return with status {@link HttpResponseStatus#BAD_REQUEST}. + */ + protected void writeBadRequest(ChannelHandlerContext ctx, String message) { + Result result = new Result<>(message); + String json = JSON.toJSONString(result, JSONWriter.Feature.WriteNulls); + writeJson(ctx, json, HttpResponseStatus.BAD_REQUEST); } - protected void preflight(ChannelHandlerContext ctx) { - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); - responseHeaders.add(EventMeshConstants.HANDLER_METHODS, "*"); - responseHeaders.add(EventMeshConstants.HANDLER_HEADERS, "*"); - responseHeaders.add(EventMeshConstants.HANDLER_AGE, EventMeshConstants.MAX_AGE); - DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.EMPTY_BUFFER, - responseHeaders, responseHeaders); - write(ctx, response); + protected void writeUnauthorized(ChannelHandlerContext ctx, String message) { + Result result = new Result<>(message); + String json = JSON.toJSONString(result, JSONWriter.Feature.WriteNulls); + writeJson(ctx, json, HttpResponseStatus.UNAUTHORIZED); } /** - * Converts a query string to a map of key-value pairs. - *

- * This method takes a query string and parses it to create a map of key-value pairs, where each key and value are extracted from the query string - * separated by '='. - *

- * If the query string is null, an empty map is returned. - * - * @param query the query string to convert to a map - * @return a map containing the key-value pairs from the query string + * Use {@link HttpResponseUtils#buildHttpResponse} to build {@link HttpResponse} param. */ - protected Map queryToMap(String query) { - if (query == null) { - return new HashMap<>(); - } - Map result = new HashMap<>(); - for (String param : query.split("&")) { - String[] entry = param.split("="); - if (entry.length > 1) { - result.put(entry[0], entry[1]); - } else { - result.put(entry[0], ""); - } - } - return result; + protected void write(ChannelHandlerContext ctx, HttpResponse response) { + ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE); } @Override @@ -125,25 +102,47 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex case POST: post(httpRequest, ctx); break; + case PUT: + put(httpRequest, ctx); + break; case DELETE: delete(httpRequest, ctx); break; - default: // do nothing + default: + // do nothing break; } } - protected void post(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { + protected void preflight(ChannelHandlerContext ctx) { + HttpHeaders responseHeaders = new DefaultHttpHeaders(); + responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); + responseHeaders.add(EventMeshConstants.HANDLER_METHODS, "*"); + responseHeaders.add(EventMeshConstants.HANDLER_HEADERS, "*"); + responseHeaders.add(EventMeshConstants.HANDLER_AGE, EventMeshConstants.MAX_AGE); + write(ctx, HttpResponseUtils.buildHttpResponse("", ctx, responseHeaders, HttpResponseStatus.OK)); } - protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { + protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { + // Override this method in subclass } - protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { + /** + * Add new resource. + */ + protected void post(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { + // Override this method in subclass + } + + /** + * Update resource, should be idempotent. + */ + protected void put(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { + // Override this method in subclass } - protected Map parseHttpRequestBody(final HttpRequest httpRequest) throws IOException { - return HttpRequestUtil.parseHttpRequestBody(httpRequest, null, null); + protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { + // Override this method in subclass } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AdminHandlerManager.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AdminHandlerManager.java index 744990e740..4f81584b9d 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AdminHandlerManager.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/AdminHandlerManager.java @@ -17,11 +17,35 @@ package org.apache.eventmesh.runtime.admin.handler; +import org.apache.eventmesh.runtime.admin.handler.v1.ConfigurationHandlerV1; +import org.apache.eventmesh.runtime.admin.handler.v1.DeleteWebHookConfigHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.EventHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.GrpcClientHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.HTTPClientHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.InsertWebHookConfigHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.MetaHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.MetricsHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.QueryRecommendEventMeshHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.QueryWebHookConfigByIdHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.QueryWebHookConfigByManufacturerHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.RedirectClientByIpPortHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.RedirectClientByPathHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.RedirectClientBySubSystemHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.RejectAllClientHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.RejectClientByIpPortHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.RejectClientBySubSystemHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.ShowClientBySystemHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.ShowClientHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.ShowListenClientByTopicHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.TCPClientHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.TopicHandler; +import org.apache.eventmesh.runtime.admin.handler.v1.UpdateWebHookConfigHandler; +import org.apache.eventmesh.runtime.admin.handler.v2.ConfigurationHandler; import org.apache.eventmesh.runtime.boot.EventMeshGrpcServer; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.apache.eventmesh.runtime.boot.EventMeshServer; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.meta.MetaStorage; import org.apache.eventmesh.webhook.admin.AdminWebHookConfigOperationManager; import org.apache.eventmesh.webhook.api.WebHookConfigOperation; @@ -55,6 +79,7 @@ public AdminHandlerManager(EventMeshServer eventMeshServer) { } public void registerHttpHandler() { + // v1 endpoints initHandler(new ShowClientHandler(eventMeshTCPServer)); initHandler(new ShowClientBySystemHandler(eventMeshTCPServer)); initHandler(new RejectAllClientHandler(eventMeshTCPServer)); @@ -68,7 +93,7 @@ public void registerHttpHandler() { initHandler(new TCPClientHandler(eventMeshTCPServer)); initHandler(new HTTPClientHandler(eventMeshHTTPServer)); initHandler(new GrpcClientHandler(eventMeshGrpcServer)); - initHandler(new ConfigurationHandler( + initHandler(new ConfigurationHandlerV1( eventMeshTCPServer.getEventMeshTCPConfiguration(), eventMeshHTTPServer.getEventMeshHttpConfiguration(), eventMeshGrpcServer.getEventMeshGrpcConfiguration())); @@ -84,11 +109,17 @@ public void registerHttpHandler() { initHandler(new QueryWebHookConfigByIdHandler(webHookConfigOperation)); initHandler(new QueryWebHookConfigByManufacturerHandler(webHookConfigOperation)); } + + // v2 endpoints + initHandler(new ConfigurationHandler( + eventMeshTCPServer.getEventMeshTCPConfiguration(), + eventMeshHTTPServer.getEventMeshHttpConfiguration(), + eventMeshGrpcServer.getEventMeshGrpcConfiguration())); } private void initHandler(HttpHandler httpHandler) { - EventHttpHandler eventHttpHandler = httpHandler.getClass().getAnnotation(EventHttpHandler.class); - httpHandlerMap.putIfAbsent(eventHttpHandler.path(), httpHandler); + EventMeshHttpHandler eventMeshHttpHandler = httpHandler.getClass().getAnnotation(EventMeshHttpHandler.class); + httpHandlerMap.putIfAbsent(eventMeshHttpHandler.path(), httpHandler); } public Optional getHttpHandler(String path) { diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ConfigurationHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ConfigurationHandlerV1.java similarity index 76% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ConfigurationHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ConfigurationHandlerV1.java index 8a7d3d7ce8..d9c5c6bb8e 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ConfigurationHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ConfigurationHandlerV1.java @@ -15,26 +15,18 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; -import org.apache.eventmesh.runtime.admin.response.GetConfigurationResponse; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; +import org.apache.eventmesh.runtime.admin.response.v1.GetConfigurationResponse; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.configuration.EventMeshGrpcConfiguration; import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration; import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; -import org.apache.eventmesh.runtime.util.HttpResponseUtils; - -import java.util.Objects; import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.http.DefaultHttpHeaders; -import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpRequest; -import io.netty.handler.codec.http.HttpResponse; -import io.netty.handler.codec.http.HttpResponseStatus; import lombok.extern.slf4j.Slf4j; @@ -43,13 +35,15 @@ *

* This handler is responsible for retrieving the current configuration information of the EventMesh node, including service name, service * environment, and listening ports for various protocols. + *

+ * TODO The path of endpoints under v1 package shall be changed to {@code /v1/configuration} with Next.js EventMesh Dashboard. * * @see AbstractHttpHandler */ @Slf4j -@EventHttpHandler(path = "/configuration") -public class ConfigurationHandler extends AbstractHttpHandler { +@EventMeshHttpHandler(path = "/configuration") +public class ConfigurationHandlerV1 extends AbstractHttpHandler { private final EventMeshTCPConfiguration eventMeshTCPConfiguration; private final EventMeshHTTPConfiguration eventMeshHTTPConfiguration; @@ -62,7 +56,7 @@ public class ConfigurationHandler extends AbstractHttpHandler { * @param eventMeshHTTPConfiguration the HTTP configuration for EventMesh * @param eventMeshGrpcConfiguration the gRPC configuration for EventMesh */ - public ConfigurationHandler( + public ConfigurationHandlerV1( EventMeshTCPConfiguration eventMeshTCPConfiguration, EventMeshHTTPConfiguration eventMeshHTTPConfiguration, EventMeshGrpcConfiguration eventMeshGrpcConfiguration) { @@ -74,9 +68,6 @@ public ConfigurationHandler( @Override protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); GetConfigurationResponse getConfigurationResponse = new GetConfigurationResponse( eventMeshTCPConfiguration.getSysID(), eventMeshTCPConfiguration.getMetaStorageAddr(), @@ -97,9 +88,6 @@ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex eventMeshGrpcConfiguration.getGrpcServerPort(), eventMeshGrpcConfiguration.isEventMeshServerUseTls()); String result = JsonUtils.toJSONString(getConfigurationResponse); - HttpResponse httpResponse = - HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders, - HttpResponseStatus.OK); - write(ctx, httpResponse); + writeJson(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/DeleteWebHookConfigHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/DeleteWebHookConfigHandler.java similarity index 89% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/DeleteWebHookConfigHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/DeleteWebHookConfigHandler.java index feb73094c8..390ed38bc4 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/DeleteWebHookConfigHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/DeleteWebHookConfigHandler.java @@ -15,11 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; import org.apache.eventmesh.webhook.api.WebHookConfig; import org.apache.eventmesh.webhook.api.WebHookConfigOperation; @@ -54,7 +55,7 @@ @SuppressWarnings("restriction") @Slf4j -@EventHttpHandler(path = "/webhook/deleteWebHookConfig") +@EventMeshHttpHandler(path = "/webhook/deleteWebHookConfig") public class DeleteWebHookConfigHandler extends AbstractHttpHandler { private final WebHookConfigOperation operation; @@ -69,14 +70,13 @@ public DeleteWebHookConfigHandler(WebHookConfigOperation operation) { @Override public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - Map body = parseHttpRequestBody(httpRequest); + Map body = HttpRequestUtil.parseHttpRequestBody(httpRequest); Objects.requireNonNull(body, "body can not be null"); // Resolve to WebHookConfig WebHookConfig webHookConfig = JsonUtils.mapToObject(body, WebHookConfig.class); // Delete the existing WebHookConfig Integer code = operation.deleteWebHookConfig(webHookConfig); // operating result String result = 1 == code ? "deleteWebHookConfig Succeed!" : "deleteWebHookConfig Failed!"; - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); - + writeText(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/EventHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/EventHandler.java similarity index 87% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/EventHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/EventHandler.java index 9e4dcadc3f..658fcac5fc 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/EventHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/EventHandler.java @@ -15,12 +15,14 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; import org.apache.eventmesh.common.utils.JsonUtils; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.plugin.MQAdminWrapper; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; import java.net.URI; import java.nio.charset.StandardCharsets; @@ -53,7 +55,7 @@ */ @Slf4j -@EventHttpHandler(path = "/event") +@EventMeshHttpHandler(path = "/event") public class EventHandler extends AbstractHttpHandler { private final MQAdminWrapper admin; @@ -79,11 +81,11 @@ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex HttpHeaders responseHeaders = new DefaultHttpHeaders(); responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); String queryString = URI.create(httpRequest.uri()).getQuery(); - if (queryString == null || "".equals(queryString)) { - write401(ctx); + if (queryString == null || queryString.isEmpty()) { + writeUnauthorized(ctx, ""); return; } - Map queryMap = queryToMap(queryString); + Map queryMap = HttpRequestUtil.queryStringToMap(queryString); String topicName = queryMap.get("topicName"); int offset = Integer.parseInt(queryMap.get("offset")); int length = Integer.parseInt(queryMap.get("length")); @@ -103,12 +105,12 @@ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex protected void post(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { HttpHeaders responseHeaders = new DefaultHttpHeaders(); responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); - String request = JsonUtils.toJSONString(parseHttpRequestBody(httpRequest)); + String request = JsonUtils.toJSONString(HttpRequestUtil.parseHttpRequestBody(httpRequest)); byte[] rawRequest = request.getBytes(StandardCharsets.UTF_8); CloudEvent event = Objects.requireNonNull(EventFormatProvider .getInstance() .resolveFormat(JsonFormat.CONTENT_TYPE)).deserialize(rawRequest); admin.publish(event); - writeSuccess(ctx); + writeText(ctx, ""); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/GrpcClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/GrpcClientHandler.java similarity index 79% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/GrpcClientHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/GrpcClientHandler.java index 3712defd1a..af48aea960 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/GrpcClientHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/GrpcClientHandler.java @@ -15,18 +15,17 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.admin.request.DeleteGrpcClientRequest; -import org.apache.eventmesh.runtime.admin.response.GetClientResponse; +import org.apache.eventmesh.runtime.admin.response.v1.GetClientResponse; import org.apache.eventmesh.runtime.boot.EventMeshGrpcServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.core.protocol.grpc.consumer.ConsumerManager; import org.apache.eventmesh.runtime.core.protocol.grpc.consumer.consumergroup.ConsumerGroupClient; -import org.apache.eventmesh.runtime.util.HttpResponseUtils; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; import java.util.ArrayList; import java.util.List; @@ -35,11 +34,7 @@ import java.util.Optional; import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.http.DefaultHttpHeaders; -import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpRequest; -import io.netty.handler.codec.http.HttpResponse; -import io.netty.handler.codec.http.HttpResponseStatus; import lombok.extern.slf4j.Slf4j; @@ -53,7 +48,7 @@ */ @Slf4j -@EventHttpHandler(path = "/client/grpc") +@EventMeshHttpHandler(path = "/client/grpc") public class GrpcClientHandler extends AbstractHttpHandler { private final EventMeshGrpcServer eventMeshGrpcServer; @@ -71,7 +66,7 @@ public GrpcClientHandler( @Override protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - Map body = parseHttpRequestBody(httpRequest); + Map body = HttpRequestUtil.parseHttpRequestBody(httpRequest); Objects.requireNonNull(body, "body can not be null"); DeleteGrpcClientRequest deleteGrpcClientRequest = JsonUtils.mapToObject(body, DeleteGrpcClientRequest.class); String url = Objects.requireNonNull(deleteGrpcClientRequest).getUrl(); @@ -86,16 +81,11 @@ protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws } } } - DefaultHttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); - writeSuccess(ctx, responseHeaders); + writeText(ctx, ""); } @Override protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); // Get the list of gRPC clients List getClientResponseList = new ArrayList<>(); @@ -129,10 +119,7 @@ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex }); // Convert getClientResponseList to JSON and send the response String result = JsonUtils.toJSONString(getClientResponseList); - HttpResponse httpResponse = - HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders, - HttpResponseStatus.OK); - write(ctx, httpResponse); + writeJson(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/HTTPClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/HTTPClientHandler.java similarity index 81% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/HTTPClientHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/HTTPClientHandler.java index f4e8eb7369..2a72241949 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/HTTPClientHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/HTTPClientHandler.java @@ -15,17 +15,17 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.admin.request.DeleteHTTPClientRequest; -import org.apache.eventmesh.runtime.admin.response.GetClientResponse; +import org.apache.eventmesh.runtime.admin.response.v1.GetClientResponse; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.http.processor.inf.Client; -import org.apache.eventmesh.runtime.util.HttpResponseUtils; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; import java.util.ArrayList; import java.util.List; @@ -34,11 +34,7 @@ import java.util.Optional; import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.http.DefaultHttpHeaders; -import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpRequest; -import io.netty.handler.codec.http.HttpResponse; -import io.netty.handler.codec.http.HttpResponseStatus; import lombok.extern.slf4j.Slf4j; @@ -52,7 +48,7 @@ */ @Slf4j -@EventHttpHandler(path = "/client/http") +@EventMeshHttpHandler(path = "/client/http") public class HTTPClientHandler extends AbstractHttpHandler { private final EventMeshHTTPServer eventMeshHTTPServer; @@ -69,7 +65,7 @@ public HTTPClientHandler( } protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - Map body = parseHttpRequestBody(httpRequest); + Map body = HttpRequestUtil.parseHttpRequestBody(httpRequest); if (!Objects.isNull(body)) { DeleteHTTPClientRequest deleteHTTPClientRequest = JsonUtils.mapToObject(body, DeleteHTTPClientRequest.class); String url = Objects.requireNonNull(deleteHTTPClientRequest).getUrl(); @@ -79,7 +75,7 @@ protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws clientList.removeIf(client -> Objects.equals(client.getUrl(), url)); } // Set the response headers and send a 200 status code empty response - writeSuccess(ctx); + writeText(ctx, ""); } } @@ -92,11 +88,6 @@ protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws * @throws Exception if an I/O error occurs while handling the request */ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - // Set the response headers - responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); - // Get the list of HTTP clients List getClientResponseList = new ArrayList<>(); @@ -131,10 +122,6 @@ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex // Convert getClientResponseList to JSON and send the response String result = JsonUtils.toJSONString(getClientResponseList); - HttpResponse httpResponse = - HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders, - HttpResponseStatus.OK); - write(ctx, httpResponse); - + writeJson(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/InsertWebHookConfigHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/InsertWebHookConfigHandler.java similarity index 89% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/InsertWebHookConfigHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/InsertWebHookConfigHandler.java index ce01838a7e..140decba92 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/InsertWebHookConfigHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/InsertWebHookConfigHandler.java @@ -15,11 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; import org.apache.eventmesh.webhook.api.WebHookConfig; import org.apache.eventmesh.webhook.api.WebHookConfigOperation; @@ -55,7 +56,7 @@ @SuppressWarnings("restriction") @Slf4j -@EventHttpHandler(path = "/webhook/insertWebHookConfig") +@EventMeshHttpHandler(path = "/webhook/insertWebHookConfig") public class InsertWebHookConfigHandler extends AbstractHttpHandler { private final WebHookConfigOperation operation; @@ -75,16 +76,14 @@ public InsertWebHookConfigHandler(WebHookConfigOperation operation) { * * @throws Exception if an I/O error occurs while handling the request */ - @Override public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - Map body = parseHttpRequestBody(httpRequest); + Map body = HttpRequestUtil.parseHttpRequestBody(httpRequest); Objects.requireNonNull(body, "body can not be null"); WebHookConfig webHookConfig = JsonUtils.mapToObject(body, WebHookConfig.class); // Add the WebHookConfig if no existing duplicate configuration is found Integer code = operation.insertWebHookConfig(webHookConfig); // operating result String result = 1 == code ? "insertWebHookConfig Succeed!" : "insertWebHookConfig Failed!"; - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); - + writeText(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetaHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetaHandler.java similarity index 70% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetaHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetaHandler.java index 77e995b7fd..7e10906630 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetaHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetaHandler.java @@ -15,29 +15,22 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; import org.apache.eventmesh.api.meta.dto.EventMeshDataInfo; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; -import org.apache.eventmesh.runtime.admin.response.GetRegistryResponse; -import org.apache.eventmesh.runtime.common.EventHttpHandler; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; +import org.apache.eventmesh.runtime.admin.response.v1.GetRegistryResponse; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.meta.MetaStorage; -import org.apache.eventmesh.runtime.util.HttpResponseUtils; import java.io.IOException; import java.util.ArrayList; import java.util.Comparator; import java.util.List; -import java.util.Objects; import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.http.DefaultHttpHeaders; -import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpRequest; -import io.netty.handler.codec.http.HttpResponse; -import io.netty.handler.codec.http.HttpResponseStatus; import lombok.extern.slf4j.Slf4j; @@ -51,7 +44,7 @@ */ @Slf4j -@EventHttpHandler(path = "/meta") +@EventMeshHttpHandler(path = "/meta") public class MetaHandler extends AbstractHttpHandler { private final MetaStorage eventMeshMetaStorage; @@ -66,9 +59,6 @@ public MetaHandler(MetaStorage eventMeshMetaStorage) { @Override protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws IOException { - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); try { List getRegistryResponseList = new ArrayList<>(); List eventMeshDataInfos = eventMeshMetaStorage.findAllEventMeshInfo(); @@ -83,19 +73,11 @@ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws IO } getRegistryResponseList.sort(Comparator.comparing(GetRegistryResponse::getEventMeshClusterName)); String result = JsonUtils.toJSONString(getRegistryResponseList); - HttpResponse httpResponse = - HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders, - HttpResponseStatus.OK); - write(ctx, httpResponse); + writeJson(ctx, result); } catch (NullPointerException e) { // registry not initialized, return empty list String result = JsonUtils.toJSONString(new ArrayList<>()); - HttpResponse httpResponse = - HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders, - HttpResponseStatus.OK); - write(ctx, httpResponse); + writeJson(ctx, result); } - } - } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetricsHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetricsHandler.java old mode 100755 new mode 100644 similarity index 80% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetricsHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetricsHandler.java index cf2e46ecc6..2a63f8f581 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetricsHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/MetricsHandler.java @@ -15,28 +15,21 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; import org.apache.eventmesh.metrics.api.model.HttpSummaryMetrics; import org.apache.eventmesh.metrics.api.model.TcpSummaryMetrics; -import org.apache.eventmesh.runtime.admin.response.GetMetricsResponse; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; +import org.apache.eventmesh.runtime.admin.response.v1.GetMetricsResponse; import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; -import org.apache.eventmesh.runtime.util.HttpResponseUtils; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import java.io.IOException; -import java.util.Objects; import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.http.DefaultHttpHeaders; -import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpRequest; -import io.netty.handler.codec.http.HttpResponse; -import io.netty.handler.codec.http.HttpResponseStatus; import lombok.extern.slf4j.Slf4j; @@ -49,7 +42,7 @@ */ @Slf4j -@EventHttpHandler(path = "/metrics") +@EventMeshHttpHandler(path = "/metrics") public class MetricsHandler extends AbstractHttpHandler { private final HttpSummaryMetrics httpSummaryMetrics; @@ -70,9 +63,6 @@ public MetricsHandler(EventMeshHTTPServer eventMeshHTTPServer, @Override protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws IOException { - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); GetMetricsResponse getMetricsResponse = new GetMetricsResponse( httpSummaryMetrics.maxHTTPTPS(), httpSummaryMetrics.avgHTTPTPS(), @@ -116,9 +106,6 @@ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws IO tcpSummaryMetrics.getAllConnections(), tcpSummaryMetrics.getSubTopicNum()); String result = JsonUtils.toJSONString(getMetricsResponse); - HttpResponse httpResponse = - HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders, - HttpResponseStatus.OK); - write(ctx, httpResponse); + writeJson(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryRecommendEventMeshHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryRecommendEventMeshHandler.java similarity index 91% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryRecommendEventMeshHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryRecommendEventMeshHandler.java index 1688d387db..f9aabc84b1 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryRecommendEventMeshHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryRecommendEventMeshHandler.java @@ -15,12 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.NetUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend.EventMeshRecommendImpl; import org.apache.eventmesh.runtime.core.protocol.tcp.client.recommend.EventMeshRecommendStrategy; @@ -50,7 +50,7 @@ * @see AbstractHttpHandler */ @Slf4j -@EventHttpHandler(path = "/eventMesh/recommend") +@EventMeshHttpHandler(path = "/eventMesh/recommend") public class QueryRecommendEventMeshHandler extends AbstractHttpHandler { private final EventMeshTCPServer eventMeshTCPServer; @@ -79,7 +79,7 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex // Check the validity of the parameters if (StringUtils.isBlank(group) || StringUtils.isBlank(purpose)) { result = "params illegal!"; - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); return; } @@ -88,6 +88,6 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex String recommendEventMeshResult = eventMeshRecommendStrategy.calculateRecommendEventMesh(group, purpose); result = (recommendEventMeshResult == null) ? "null" : recommendEventMeshResult; log.info("recommend eventmesh:{},group:{},purpose:{}", result, group, purpose); - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByIdHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByIdHandler.java similarity index 78% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByIdHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByIdHandler.java index 58a2438bea..97e2c29e2a 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByIdHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByIdHandler.java @@ -15,13 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; -import org.apache.eventmesh.runtime.common.EventHttpHandler; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; -import org.apache.eventmesh.runtime.util.HttpResponseUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; import org.apache.eventmesh.webhook.api.WebHookConfig; import org.apache.eventmesh.webhook.api.WebHookConfigOperation; @@ -29,11 +28,7 @@ import java.util.Objects; import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.http.DefaultHttpHeaders; -import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpRequest; -import io.netty.handler.codec.http.HttpResponse; -import io.netty.handler.codec.http.HttpResponseStatus; import lombok.extern.slf4j.Slf4j; @@ -68,7 +63,7 @@ @SuppressWarnings("restriction") @Slf4j -@EventHttpHandler(path = "/webhook/queryWebHookConfigById") +@EventMeshHttpHandler(path = "/webhook/queryWebHookConfigById") public class QueryWebHookConfigByIdHandler extends AbstractHttpHandler { private final WebHookConfigOperation operation; @@ -85,20 +80,14 @@ public QueryWebHookConfigByIdHandler(WebHookConfigOperation operation) { @Override public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); // Resolve to WebHookConfig - Map body = parseHttpRequestBody(httpRequest); + Map body = HttpRequestUtil.parseHttpRequestBody(httpRequest); if (!Objects.isNull(body)) { WebHookConfig webHookConfig = JsonUtils.mapToObject(body, WebHookConfig.class); // Retrieve the WebHookConfig by callback path WebHookConfig result = operation.queryWebHookConfigById(webHookConfig); // operating result String json = JsonUtils.toJSONString(result); - HttpResponse httpResponse = - HttpResponseUtils.getHttpResponse(Objects.requireNonNull(json).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders, - HttpResponseStatus.OK); - write(ctx, httpResponse); + writeJson(ctx, json); } throw new Exception(); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByManufacturerHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByManufacturerHandler.java similarity index 78% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByManufacturerHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByManufacturerHandler.java index 9b484f6a1f..063cd6fd05 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByManufacturerHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/QueryWebHookConfigByManufacturerHandler.java @@ -15,13 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; -import org.apache.eventmesh.runtime.common.EventHttpHandler; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; -import org.apache.eventmesh.runtime.util.HttpResponseUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; import org.apache.eventmesh.webhook.api.WebHookConfig; import org.apache.eventmesh.webhook.api.WebHookConfigOperation; @@ -30,11 +29,7 @@ import java.util.Objects; import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.http.DefaultHttpHeaders; -import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpRequest; -import io.netty.handler.codec.http.HttpResponse; -import io.netty.handler.codec.http.HttpResponseStatus; import lombok.extern.slf4j.Slf4j; @@ -63,7 +58,7 @@ @SuppressWarnings("restriction") @Slf4j -@EventHttpHandler(path = "/webhook/queryWebHookConfigByManufacturer") +@EventMeshHttpHandler(path = "/webhook/queryWebHookConfigByManufacturer") public class QueryWebHookConfigByManufacturerHandler extends AbstractHttpHandler { private final transient WebHookConfigOperation operation; @@ -82,11 +77,8 @@ public QueryWebHookConfigByManufacturerHandler(WebHookConfigOperation operation) @Override public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); // Resolve to WebHookConfig - Map body = parseHttpRequestBody(httpRequest); + Map body = HttpRequestUtil.parseHttpRequestBody(httpRequest); Objects.requireNonNull(body, "body can not be null"); WebHookConfig webHookConfig = JsonUtils.mapToObject(body, WebHookConfig.class); Integer pageNum = Integer.valueOf(body.get("pageNum").toString()); @@ -95,9 +87,6 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex // Retrieve the WebHookConfig list by manufacturer name List listWebHookConfig = operation.queryWebHookConfigByManufacturer(webHookConfig, pageNum, pageSize); // operating result String result = JsonUtils.toJSONString(listWebHookConfig); - HttpResponse httpResponse = - HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders, - HttpResponseStatus.OK); - write(ctx, httpResponse); + writeJson(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByIpPortHandler.java similarity index 88% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByIpPortHandler.java index d2805112a4..33922456f1 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByIpPortHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByIpPortHandler.java @@ -15,12 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.NetUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; @@ -57,7 +57,7 @@ */ @Slf4j -@EventHttpHandler(path = "/clientManage/redirectClientByIpPort") +@EventMeshHttpHandler(path = "/clientManage/redirectClientByIpPort") public class RedirectClientByIpPortHandler extends AbstractHttpHandler { private final EventMeshTCPServer eventMeshTCPServer; @@ -88,7 +88,7 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex || StringUtils.isBlank(destEventMeshIp) || StringUtils.isBlank(destEventMeshPort) || !StringUtils.isNumeric(destEventMeshPort)) { result = "params illegal!"; - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); return; } log.info("redirectClientByIpPort in admin,ip:{},port:{},destIp:{},destPort:{}====================", ip, @@ -114,20 +114,17 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex } } catch (Exception e) { log.error("clientManage|redirectClientByIpPort|fail|ip={}|port={}|destEventMeshIp" - + - "={}|destEventMeshPort={}", ip, port, destEventMeshIp, destEventMeshPort, e); + + "={}|destEventMeshPort={}", ip, port, destEventMeshIp, destEventMeshPort, e); result = String.format("redirectClientByIpPort fail! sessionMap size {%d}, {clientIp=%s clientPort=%s " - + - "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s", + + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s", sessionMap.size(), ip, port, destEventMeshIp, destEventMeshPort, redirectResult, e.getMessage()); - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); return; } // Serialize the result of redirection into output stream result = String.format("redirectClientByIpPort success! sessionMap size {%d}, {ip=%s port=%s " - + - "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ", + + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ", sessionMap.size(), ip, port, destEventMeshIp, destEventMeshPort, redirectResult); - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByPathHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByPathHandler.java similarity index 86% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByPathHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByPathHandler.java index fc5ad6f2d9..54b089ce54 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientByPathHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientByPathHandler.java @@ -15,12 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.NetUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; @@ -56,7 +56,7 @@ */ @Slf4j -@EventHttpHandler(path = "/clientManage/redirectClientByPath") +@EventMeshHttpHandler(path = "/clientManage/redirectClientByPath") public class RedirectClientByPathHandler extends AbstractHttpHandler { private final EventMeshTCPServer eventMeshTCPServer; @@ -83,10 +83,9 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex // Check the validity of the parameters if (StringUtils.isBlank(path) || StringUtils.isBlank(destEventMeshIp) - || StringUtils.isBlank(destEventMeshPort) - || !StringUtils.isNumeric(destEventMeshPort)) { + || StringUtils.isBlank(destEventMeshPort) || !StringUtils.isNumeric(destEventMeshPort)) { result = "params illegal!"; - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); return; } log.info("redirectClientByPath in admin,path:{},destIp:{},destPort:{}====================", path, @@ -111,20 +110,16 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex } } catch (Exception e) { log.error("clientManage|redirectClientByPath|fail|path={}|destEventMeshIp" - + - "={}|destEventMeshPort={}", path, destEventMeshIp, destEventMeshPort, e); + + "={}|destEventMeshPort={}", path, destEventMeshIp, destEventMeshPort, e); result = String.format("redirectClientByPath fail! sessionMap size {%d}, {path=%s " - + - "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s", + + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s", sessionMap.size(), path, destEventMeshIp, destEventMeshPort, redirectResult, e.getMessage()); - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); return; } result = String.format("redirectClientByPath success! sessionMap size {%d}, {path=%s " - + - "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ", + + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ", sessionMap.size(), path, destEventMeshIp, destEventMeshPort, redirectResult); - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); - + writeText(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientBySubSystemHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientBySubSystemHandler.java similarity index 88% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientBySubSystemHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientBySubSystemHandler.java index c7b959ece3..0aff5fe8b7 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RedirectClientBySubSystemHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RedirectClientBySubSystemHandler.java @@ -15,12 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.NetUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; @@ -56,7 +56,7 @@ */ @Slf4j -@EventHttpHandler(path = "/clientManage/redirectClientBySubSystem") +@EventMeshHttpHandler(path = "/clientManage/redirectClientBySubSystem") public class RedirectClientBySubSystemHandler extends AbstractHttpHandler { private final transient EventMeshTCPServer eventMeshTCPServer; @@ -83,7 +83,7 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex if (!StringUtils.isNumeric(subSystem) || StringUtils.isBlank(destEventMeshIp) || StringUtils.isBlank(destEventMeshPort) || !StringUtils.isNumeric(destEventMeshPort)) { - write(ctx, "params illegal!".getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, "params illegal!"); return; } log.info("redirectClientBySubSystem in admin,subsys:{},destIp:{},destPort:{}====================", @@ -111,15 +111,13 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex log.error("clientManage|redirectClientBySubSystem|fail|subSystem={}|destEventMeshIp" + "={}|destEventMeshPort={}", subSystem, destEventMeshIp, destEventMeshPort, e); - write(ctx, String.format("redirectClientBySubSystem fail! sessionMap size {%d}, {subSystem=%s " + writeText(ctx, String.format("redirectClientBySubSystem fail! sessionMap size {%d}, {subSystem=%s " + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s}, errorMsg : %s", - sessionMap.size(), subSystem, destEventMeshIp, destEventMeshPort, redirectResult, e.getMessage()) - .getBytes(Constants.DEFAULT_CHARSET)); + sessionMap.size(), subSystem, destEventMeshIp, destEventMeshPort, redirectResult, e.getMessage())); return; } - write(ctx, String.format("redirectClientBySubSystem success! sessionMap size {%d}, {subSystem=%s " + writeText(ctx, String.format("redirectClientBySubSystem success! sessionMap size {%d}, {subSystem=%s " + "destEventMeshIp=%s destEventMeshPort=%s}, result {%s} ", - sessionMap.size(), subSystem, destEventMeshIp, destEventMeshPort, redirectResult) - .getBytes(Constants.DEFAULT_CHARSET)); + sessionMap.size(), subSystem, destEventMeshIp, destEventMeshPort, redirectResult)); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectAllClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectAllClientHandler.java similarity index 85% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectAllClientHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectAllClientHandler.java index 614c30f600..bc139b3938 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectAllClientHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectAllClientHandler.java @@ -15,12 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.NetUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; @@ -48,7 +48,7 @@ */ @Slf4j -@EventHttpHandler(path = "/clientManage/rejectAllClient") +@EventMeshHttpHandler(path = "/clientManage/rejectAllClient") public class RejectAllClientHandler extends AbstractHttpHandler { private final transient EventMeshTCPServer eventMeshTCPServer; @@ -84,13 +84,11 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex } } catch (Exception e) { log.error("clientManage rejectAllClient fail", e); - write(ctx, String.format("rejectAllClient fail! sessionMap size {%d}, had reject {%s}, errorMsg : %s", - sessionMap.size(), NetUtils.addressToString(successRemoteAddrs), e.getMessage()) - .getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, String.format("rejectAllClient fail! sessionMap size {%d}, had reject {%s}, errorMsg : %s", + sessionMap.size(), NetUtils.addressToString(successRemoteAddrs), e.getMessage())); return; } - write(ctx, String.format("rejectAllClient success! sessionMap size {%d}, had reject {%s}", sessionMap.size(), - NetUtils.addressToString(successRemoteAddrs)) - .getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, String.format("rejectAllClient success! sessionMap size {%d}, had reject {%s}", + sessionMap.size(), NetUtils.addressToString(successRemoteAddrs))); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientByIpPortHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientByIpPortHandler.java similarity index 92% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientByIpPortHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientByIpPortHandler.java index d9ce5f574e..6d6165785e 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientByIpPortHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientByIpPortHandler.java @@ -15,12 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.NetUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; @@ -59,7 +59,7 @@ */ @Slf4j -@EventHttpHandler(path = "/clientManage/rejectClientByIpPort") +@EventMeshHttpHandler(path = "/clientManage/rejectClientByIpPort") public class RejectClientByIpPortHandler extends AbstractHttpHandler { private final EventMeshTCPServer eventMeshTCPServer; @@ -86,14 +86,14 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex // Check the validity of the parameters if (StringUtils.isBlank(ip) || StringUtils.isBlank(port)) { result = "params illegal!"; - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); return; } log.info("rejectClientByIpPort in admin,ip:{},port:{}====================", ip, port); // Retrieve the mapping between Sessions and their corresponding client address ClientSessionGroupMapping clientSessionGroupMapping = eventMeshTCPServer.getClientSessionGroupMapping(); ConcurrentHashMap sessionMap = clientSessionGroupMapping.getSessionMap(); - final List successRemoteAddrs = new ArrayList(); + final List successRemoteAddrs = new ArrayList<>(); try { if (!sessionMap.isEmpty()) { // Iterate through the sessionMap to find matching sessions where the remote client address matches the given IP and port @@ -113,12 +113,11 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex log.error("clientManage|rejectClientByIpPort|fail|ip={}|port={}", ip, port, e); result = String.format("rejectClientByIpPort fail! {ip=%s port=%s}, had reject {%s}, errorMsg : %s", ip, port, NetUtils.addressToString(successRemoteAddrs), e.getMessage()); - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); return; } result = String.format("rejectClientByIpPort success! {ip=%s port=%s}, had reject {%s}", ip, port, NetUtils.addressToString(successRemoteAddrs)); - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); - + writeText(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientBySubSystemHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientBySubSystemHandler.java similarity index 93% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientBySubSystemHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientBySubSystemHandler.java index 4ff18caf96..ac8a8814e6 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RejectClientBySubSystemHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/RejectClientBySubSystemHandler.java @@ -15,12 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.NetUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; @@ -56,7 +56,7 @@ * @see AbstractHttpHandler */ -@EventHttpHandler(path = "/clientManage/rejectClientBySubSystem") +@EventMeshHttpHandler(path = "/clientManage/rejectClientBySubSystem") @Slf4j public class RejectClientBySubSystemHandler extends AbstractHttpHandler { @@ -94,7 +94,7 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex // Check the validity of the parameters if (StringUtils.isBlank(subSystem)) { result = "params illegal!"; - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); return; } @@ -124,15 +124,13 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex + "subSystemId=%s}, errorMsg : %s", sessionMap.size(), printClients(successRemoteAddrs), subSystem, e.getMessage()); - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); return; } // Serialize the successfully rejected client addresses into output stream result = String.format("rejectClientBySubSystem success! sessionMap size {%d}, had reject {%s} , {" + "subSystemId=%s}", sessionMap.size(), printClients(successRemoteAddrs), subSystem); - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); - - + writeText(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientBySystemHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientBySystemHandler.java similarity index 90% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientBySystemHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientBySystemHandler.java index 9d2c84bc11..491789ceb3 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientBySystemHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientBySystemHandler.java @@ -15,13 +15,13 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.common.utils.NetUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; @@ -49,7 +49,7 @@ */ @Slf4j -@EventHttpHandler(path = "/clientManage/showClientBySystem") +@EventMeshHttpHandler(path = "/clientManage/showClientBySystem") public class ShowClientBySystemHandler extends AbstractHttpHandler { private final EventMeshTCPServer eventMeshTCPServer; @@ -84,14 +84,11 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex if (session.getClient().getSubsystem().equals(subSystem)) { UserAgent userAgent = session.getClient(); result.append(String.format("pid=%s | ip=%s | port=%s | path=%s | purpose=%s", - userAgent.getPid(), userAgent.getHost(), userAgent.getPort(), - userAgent.getPath(), userAgent.getPurpose())) + userAgent.getPid(), userAgent.getHost(), userAgent.getPort(), userAgent.getPath(), userAgent.getPurpose())) .append(newLine); } } } - write(ctx, result.toString().getBytes(Constants.DEFAULT_CHARSET)); - + writeText(ctx, result.toString()); } - } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientHandler.java similarity index 90% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientHandler.java index 9699a13835..fc288ba7e6 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowClientHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowClientHandler.java @@ -15,11 +15,11 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; @@ -43,7 +43,7 @@ */ @Slf4j -@EventHttpHandler(path = "/clientManage/showClient") +@EventMeshHttpHandler(path = "/clientManage/showClient") public class ShowClientHandler extends AbstractHttpHandler { private final EventMeshTCPServer eventMeshTCPServer; @@ -66,7 +66,7 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex ClientSessionGroupMapping clientSessionGroupMapping = eventMeshTCPServer.getClientSessionGroupMapping(); // Store the subsystem and the corresponding client count. - HashMap statMap = new HashMap(); + HashMap statMap = new HashMap<>(); Map sessionMap = clientSessionGroupMapping.getSessionMap(); if (!sessionMap.isEmpty()) { @@ -84,6 +84,6 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex result.append(String.format("System=%s | ClientNum=%d", entry.getKey(), entry.getValue().intValue())).append(newLine); } } - write(ctx, result.toString().getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result.toString()); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowListenClientByTopicHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowListenClientByTopicHandler.java similarity index 93% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowListenClientByTopicHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowListenClientByTopicHandler.java index 412ae5e5ba..266ffbc06d 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ShowListenClientByTopicHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/ShowListenClientByTopicHandler.java @@ -15,13 +15,13 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.common.utils.NetUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientGroupWrapper; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; @@ -49,7 +49,7 @@ */ @Slf4j -@EventHttpHandler(path = "/clientManage/showListenClientByTopic") +@EventMeshHttpHandler(path = "/clientManage/showListenClientByTopic") public class ShowListenClientByTopicHandler extends AbstractHttpHandler { private final EventMeshTCPServer eventMeshTCPServer; @@ -93,7 +93,6 @@ public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex } } } - write(ctx, result.toString().getBytes(Constants.DEFAULT_CHARSET)); - + writeText(ctx, result.toString()); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TCPClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TCPClientHandler.java similarity index 83% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TCPClientHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TCPClientHandler.java index a4da5bf94c..429ce426ed 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TCPClientHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TCPClientHandler.java @@ -15,20 +15,19 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.protocol.tcp.UserAgent; import org.apache.eventmesh.common.utils.JsonUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.admin.request.DeleteTCPClientRequest; -import org.apache.eventmesh.runtime.admin.response.GetClientResponse; +import org.apache.eventmesh.runtime.admin.response.v1.GetClientResponse; import org.apache.eventmesh.runtime.boot.EventMeshTCPServer; -import org.apache.eventmesh.runtime.common.EventHttpHandler; -import org.apache.eventmesh.runtime.constants.EventMeshConstants; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client; import org.apache.eventmesh.runtime.core.protocol.tcp.client.group.ClientSessionGroupMapping; import org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session; -import org.apache.eventmesh.runtime.util.HttpResponseUtils; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; import java.net.InetSocketAddress; import java.util.ArrayList; @@ -39,11 +38,7 @@ import java.util.concurrent.ConcurrentHashMap; import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.http.DefaultHttpHeaders; -import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpRequest; -import io.netty.handler.codec.http.HttpResponse; -import io.netty.handler.codec.http.HttpResponseStatus; import lombok.extern.slf4j.Slf4j; @@ -57,7 +52,7 @@ */ @Slf4j -@EventHttpHandler(path = "/client/tcp") +@EventMeshHttpHandler(path = "/client/tcp") public class TCPClientHandler extends AbstractHttpHandler { private final EventMeshTCPServer eventMeshTCPServer; @@ -76,7 +71,7 @@ public TCPClientHandler( @Override protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { // Parse the request body string into a DeleteTCPClientRequest object - Map body = parseHttpRequestBody(httpRequest); + Map body = HttpRequestUtil.parseHttpRequestBody(httpRequest); Objects.requireNonNull(body, "body can not be null"); DeleteTCPClientRequest deleteTCPClientRequest = JsonUtils.mapToObject(body, DeleteTCPClientRequest.class); String host = Objects.requireNonNull(deleteTCPClientRequest).getHost(); @@ -98,16 +93,11 @@ protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws } // Set the response headers and send a 200 status code empty response - writeSuccess(ctx); - + writeText(ctx, ""); } @Override protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - // Set the response headers - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); // Get the list of connected TCP clients ClientSessionGroupMapping clientSessionGroupMapping = eventMeshTCPServer.getClientSessionGroupMapping(); Map sessionMap = clientSessionGroupMapping.getSessionMap(); @@ -140,10 +130,6 @@ protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Ex // Convert getClientResponseList to JSON and send the response String result = JsonUtils.toJSONString(getClientResponseList); - HttpResponse httpResponse = - HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders, - HttpResponseStatus.OK); - write(ctx, httpResponse); - + writeJson(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TopicHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TopicHandler.java similarity index 79% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TopicHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TopicHandler.java index c30533d535..b536150354 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TopicHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/TopicHandler.java @@ -15,17 +15,17 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; import org.apache.eventmesh.api.admin.TopicProperties; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; import org.apache.eventmesh.runtime.admin.request.CreateTopicRequest; import org.apache.eventmesh.runtime.admin.request.DeleteTopicRequest; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; import org.apache.eventmesh.runtime.constants.EventMeshConstants; import org.apache.eventmesh.runtime.core.plugin.MQAdminWrapper; -import org.apache.eventmesh.runtime.util.HttpResponseUtils; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; import java.util.List; import java.util.Map; @@ -35,8 +35,6 @@ import io.netty.handler.codec.http.DefaultHttpHeaders; import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpRequest; -import io.netty.handler.codec.http.HttpResponse; -import io.netty.handler.codec.http.HttpResponseStatus; import lombok.extern.slf4j.Slf4j; @@ -54,7 +52,7 @@ */ @Slf4j -@EventHttpHandler(path = "/topic") +@EventMeshHttpHandler(path = "/topic") public class TopicHandler extends AbstractHttpHandler { private final MQAdminWrapper admin; @@ -77,21 +75,14 @@ public TopicHandler( @Override protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); - responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); List topicList = admin.getTopic(); String result = JsonUtils.toJSONString(topicList); - HttpResponse httpResponse = - HttpResponseUtils.getHttpResponse(Objects.requireNonNull(result).getBytes(Constants.DEFAULT_CHARSET), ctx, responseHeaders, - HttpResponseStatus.OK); - write(ctx, httpResponse); - + writeJson(ctx, result); } @Override protected void post(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - Map body = parseHttpRequestBody(httpRequest); + Map body = HttpRequestUtil.parseHttpRequestBody(httpRequest); Objects.requireNonNull(body, "body can not be null"); HttpHeaders responseHeaders = new DefaultHttpHeaders(); responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); @@ -99,13 +90,12 @@ protected void post(HttpRequest httpRequest, ChannelHandlerContext ctx) throws E CreateTopicRequest createTopicRequest = JsonUtils.mapToObject(body, CreateTopicRequest.class); String topicName = Objects.requireNonNull(createTopicRequest).getName(); admin.createTopic(topicName); - writeSuccess(ctx); - + writeText(ctx, ""); } @Override protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - Map body = parseHttpRequestBody(httpRequest); + Map body = HttpRequestUtil.parseHttpRequestBody(httpRequest); Objects.requireNonNull(body, "body can not be null"); HttpHeaders responseHeaders = new DefaultHttpHeaders(); responseHeaders.add(EventMeshConstants.CONTENT_TYPE, EventMeshConstants.APPLICATION_JSON); @@ -113,8 +103,6 @@ protected void delete(HttpRequest httpRequest, ChannelHandlerContext ctx) throws DeleteTopicRequest deleteTopicRequest = JsonUtils.mapToObject(body, DeleteTopicRequest.class); String topicName = Objects.requireNonNull(deleteTopicRequest).getName(); admin.deleteTopic(topicName); - writeSuccess(ctx); - + writeText(ctx, ""); } - } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/UpdateWebHookConfigHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/UpdateWebHookConfigHandler.java similarity index 89% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/UpdateWebHookConfigHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/UpdateWebHookConfigHandler.java index a842c84e65..ab0c1192d1 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/UpdateWebHookConfigHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v1/UpdateWebHookConfigHandler.java @@ -15,11 +15,12 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.handler; +package org.apache.eventmesh.runtime.admin.handler.v1; -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.utils.JsonUtils; -import org.apache.eventmesh.runtime.common.EventHttpHandler; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; import org.apache.eventmesh.webhook.api.WebHookConfig; import org.apache.eventmesh.webhook.api.WebHookConfigOperation; @@ -56,7 +57,7 @@ @SuppressWarnings("restriction") @Slf4j -@EventHttpHandler(path = "/webhook/updateWebHookConfig") +@EventMeshHttpHandler(path = "/webhook/updateWebHookConfig") public class UpdateWebHookConfigHandler extends AbstractHttpHandler { private final WebHookConfigOperation operation; @@ -73,13 +74,13 @@ public UpdateWebHookConfigHandler(WebHookConfigOperation operation) { @Override public void handle(HttpRequest httpRequest, ChannelHandlerContext ctx) throws Exception { - Map body = parseHttpRequestBody(httpRequest); + Map body = HttpRequestUtil.parseHttpRequestBody(httpRequest); Objects.requireNonNull(body, "body can not be null"); // Resolve to WebHookConfig WebHookConfig webHookConfig = JsonUtils.mapToObject(body, WebHookConfig.class); // Update the existing WebHookConfig Integer code = operation.updateWebHookConfig(webHookConfig); // operating result String result = 1 == code ? "updateWebHookConfig Succeed!" : "updateWebHookConfig Failed!"; - write(ctx, result.getBytes(Constants.DEFAULT_CHARSET)); + writeText(ctx, result); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v2/ConfigurationHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v2/ConfigurationHandler.java new file mode 100644 index 0000000000..ce16b95749 --- /dev/null +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/v2/ConfigurationHandler.java @@ -0,0 +1,179 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.eventmesh.runtime.admin.handler.v2; + +import org.apache.eventmesh.common.config.CommonConfiguration; +import org.apache.eventmesh.common.config.Config; +import org.apache.eventmesh.common.config.ConfigField; +import org.apache.eventmesh.runtime.admin.handler.AbstractHttpHandler; +import org.apache.eventmesh.runtime.admin.response.Result; +import org.apache.eventmesh.runtime.admin.response.v2.GetConfigurationResponse; +import org.apache.eventmesh.runtime.common.EventMeshHttpHandler; +import org.apache.eventmesh.runtime.configuration.EventMeshGrpcConfiguration; +import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration; +import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration; +import org.apache.eventmesh.runtime.util.HttpRequestUtil; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.http.HttpRequest; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.filter.Filter; +import com.alibaba.fastjson2.filter.NameFilter; +import com.alibaba.fastjson2.filter.ValueFilter; + +import lombok.extern.slf4j.Slf4j; + +import inet.ipaddr.IPAddress; + +/** + * This class handles the {@code /v2/configuration} endpoint, corresponding to the {@code eventmesh-dashboard} path {@code /}. + *

+ * This handler is responsible for retrieving the current configuration information of the EventMesh node, including service name, service + * environment, and listening ports for various protocols. + */ + +@Slf4j +@EventMeshHttpHandler(path = "/v2/configuration") +public class ConfigurationHandler extends AbstractHttpHandler { + + private final EventMeshTCPConfiguration eventMeshTCPConfiguration; + private final EventMeshHTTPConfiguration eventMeshHTTPConfiguration; + private final EventMeshGrpcConfiguration eventMeshGrpcConfiguration; + + /** + * Constructs a new instance with the provided configurations. + * + * @param eventMeshTCPConfiguration the TCP configuration for EventMesh + * @param eventMeshHTTPConfiguration the HTTP configuration for EventMesh + * @param eventMeshGrpcConfiguration the gRPC configuration for EventMesh + */ + public ConfigurationHandler( + EventMeshTCPConfiguration eventMeshTCPConfiguration, + EventMeshHTTPConfiguration eventMeshHTTPConfiguration, + EventMeshGrpcConfiguration eventMeshGrpcConfiguration) { + super(); + this.eventMeshTCPConfiguration = eventMeshTCPConfiguration; + this.eventMeshHTTPConfiguration = eventMeshHTTPConfiguration; + this.eventMeshGrpcConfiguration = eventMeshGrpcConfiguration; + } + + /** + * Parameters: + *

    + *
  • + * {@code format}: String; Optional, DefaultValue: {@code properties}, SelectableValue: {@code bean}. + *

    When {@code properties}, the field names are returned in Properties format; + *

    When {@code bean}, the field names themselves are used as json keys. + *

  • + *
+ */ + @Override + protected void get(HttpRequest httpRequest, ChannelHandlerContext ctx) { + String format = HttpRequestUtil.getQueryParam(httpRequest, "format", "properties"); + + Filter[] filters; + if (format.equals("properties")) { + filters = new Filter[] {new ConfigFieldFilter(), new IPAddressToStringFilter()}; + } else if (format.equals("bean")) { + filters = new Filter[] {new IPAddressToStringFilter()}; + } else { + log.warn("Invalid format param: {}", format); + writeBadRequest(ctx, "Invalid format param: " + format); + return; + } + + GetConfigurationResponse getConfigurationResponse = new GetConfigurationResponse( + eventMeshTCPConfiguration, + eventMeshHTTPConfiguration, + eventMeshGrpcConfiguration + ); + String json = JSON.toJSONString(Result.success(getConfigurationResponse), filters); + writeJson(ctx, json); + } + + /** + * For each member of {@link EventMeshTCPConfiguration}, {@link EventMeshHTTPConfiguration}, and {@link EventMeshGrpcConfiguration}, + * the value of the {@link ConfigField} annotation for each field is obtained through reflection, + * and then concatenated with the configuration prefix in the {@link Config} annotation to serve as the JSON key for this field. + *

+ * When the {@code name} is a member that only exists in the superclass, it will be searched for in the {@link CommonConfiguration} class. + *

+ * If a field does not have a {@link ConfigField} annotation or the value of the {@link ConfigField} annotation is empty, + * this field will be added to the JSON with the field name as the key, rather than in properties format. + */ + static class ConfigFieldFilter implements NameFilter { + @Override + public String process(Object object, String name, Object value) { + try { + Field field = findFieldInClassHierarchy(object.getClass(), name); + if (field != null && field.isAnnotationPresent(ConfigField.class)) { + ConfigField configField = field.getAnnotation(ConfigField.class); + String fieldAnnotationValue = configField.field(); + if (!fieldAnnotationValue.isEmpty()) { + Config config = object.getClass().getAnnotation(Config.class); + String prefix = config.prefix(); + return prefix + "." + fieldAnnotationValue; + } + } + } catch (NoSuchFieldException e) { + log.error("Failed to get field {} from object {}", name, object, e); + } + return name; + } + + private Field findFieldInClassHierarchy(Class clazz, String fieldName) throws NoSuchFieldException { + try { + return clazz.getDeclaredField(fieldName); + } catch (NoSuchFieldException e) { + Class superclass = clazz.getSuperclass(); + if (superclass == null) { + throw e; + } else { + return findFieldInClassHierarchy(superclass, fieldName); + } + } + } + } + + /** + * {@link IPAddress} can't be serialized directly by FastJSON, + * so this filter converts {@link IPAddress} objects to their string representation. + */ + static class IPAddressToStringFilter implements ValueFilter { + @Override + public Object apply(Object object, String name, Object value) { + if (name.equals("eventMeshIpv4BlackList") || name.equals("eventMeshIpv6BlackList")) { + if (value instanceof List) { + List ipList = new ArrayList<>(); + for (Object o : (List) value) { + if (o instanceof IPAddress) { + ipList.add(((IPAddress) o).toNormalizedString()); + } + } + return ipList; + } + } + return value; + } + } +} diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Error.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Result.java similarity index 65% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Error.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Result.java index 4b03a07ba8..f8ba718e94 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Error.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/Result.java @@ -17,22 +17,35 @@ package org.apache.eventmesh.runtime.admin.response; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * A RESTful response DTO. + */ @Data -public class Error { +@NoArgsConstructor +@AllArgsConstructor +public class Result { - private String message; + private T data; - private String stackTrace; + private String message; - @JsonCreator - public Error(@JsonProperty("message") String message, @JsonProperty("stackTrace") String stackTrace) { - super(); + public Result(String message) { this.message = message; - this.stackTrace = stackTrace; + } + + /** + * The request is valid and the result is wrapped in {@link Result}. + */ + public static Result success() { + return new Result<>("Success"); + } + + public static Result success(T data) { + return new Result<>(data, "Success"); } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetClientResponse.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetClientResponse.java similarity index 97% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetClientResponse.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetClientResponse.java index 8093704c56..42c21a0d5f 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetClientResponse.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetClientResponse.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.response; +package org.apache.eventmesh.runtime.admin.response.v1; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetConfigurationResponse.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetConfigurationResponse.java similarity index 98% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetConfigurationResponse.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetConfigurationResponse.java index b381c2f651..47cceabcac 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetConfigurationResponse.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetConfigurationResponse.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.response; +package org.apache.eventmesh.runtime.admin.response.v1; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetMetricsResponse.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetMetricsResponse.java old mode 100755 new mode 100644 similarity index 99% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetMetricsResponse.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetMetricsResponse.java index 268aedc0f9..df95eabdbb --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetMetricsResponse.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetMetricsResponse.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.response; +package org.apache.eventmesh.runtime.admin.response.v1; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetRegistryResponse.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetRegistryResponse.java old mode 100755 new mode 100644 similarity index 96% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetRegistryResponse.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetRegistryResponse.java index 8416076a33..698b6458d0 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/GetRegistryResponse.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v1/GetRegistryResponse.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.response; +package org.apache.eventmesh.runtime.admin.response.v1; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/utils/HttpExchangeUtils.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v2/GetConfigurationResponse.java similarity index 54% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/utils/HttpExchangeUtils.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v2/GetConfigurationResponse.java index 67479c8c2f..40161cca73 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/utils/HttpExchangeUtils.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/response/v2/GetConfigurationResponse.java @@ -15,27 +15,22 @@ * limitations under the License. */ -package org.apache.eventmesh.runtime.admin.utils; +package org.apache.eventmesh.runtime.admin.response.v2; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; +import org.apache.eventmesh.runtime.configuration.EventMeshGrpcConfiguration; +import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration; +import org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration; -public class HttpExchangeUtils { +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; - public static String streamToString(InputStream stream) throws IOException { - try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))) { +@Data +@NoArgsConstructor +@AllArgsConstructor +public class GetConfigurationResponse { - StringBuilder buffer = new StringBuilder(); - int b; - - while ((b = bufferedReader.read()) != -1) { - buffer.append((char) b); - } - - return buffer.toString(); - } - } + private EventMeshTCPConfiguration eventMeshTCPConfiguration; + private EventMeshHTTPConfiguration eventMeshHTTPConfiguration; + private EventMeshGrpcConfiguration eventMeshGrpcConfiguration; } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java index f7b16baa51..4abba74a54 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/EventMeshAdminServer.java @@ -17,9 +17,6 @@ package org.apache.eventmesh.runtime.boot; -import static org.apache.eventmesh.runtime.util.HttpResponseUtils.getHttpResponse; - -import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.runtime.admin.handler.AdminHandlerManager; import org.apache.eventmesh.runtime.admin.handler.HttpHandler; import org.apache.eventmesh.runtime.util.HttpResponseUtils; @@ -63,7 +60,7 @@ public EventMeshAdminServer(EventMeshServer eventMeshServer) { @Override public void init() throws Exception { - super.init("eventMesh-admin-http"); + super.init("eventMesh-admin"); adminHandlerManager.registerHttpHandler(); } @@ -92,7 +89,7 @@ public void start() throws Exception { } System.exit(-1); } - }, "EventMesh-http-server"); + }, "EventMesh-admin-server"); thread.setDaemon(true); thread.start(); started.compareAndSet(false, true); @@ -105,13 +102,10 @@ public void parseHttpRequest(ChannelHandlerContext ctx, HttpRequest httpRequest) if (httpHandlerOpt.isPresent()) { try { httpHandlerOpt.get().handle(httpRequest, ctx); - return; } catch (Exception e) { log.error("admin server channelRead error", e); - ctx.writeAndFlush( - getHttpResponse(Objects.requireNonNull(e.getMessage()).getBytes(Constants.DEFAULT_CHARSET), - ctx, HttpHeaderValues.APPLICATION_JSON, - HttpResponseStatus.INTERNAL_SERVER_ERROR)).addListener(ChannelFutureListener.CLOSE); + ctx.writeAndFlush(HttpResponseUtils.buildHttpResponse(Objects.requireNonNull(e.getMessage()), ctx, + HttpHeaderValues.APPLICATION_JSON, HttpResponseStatus.INTERNAL_SERVER_ERROR)).addListener(ChannelFutureListener.CLOSE); } } else { ctx.writeAndFlush(HttpResponseUtils.createNotFound()).addListener(ChannelFutureListener.CLOSE); @@ -120,7 +114,6 @@ public void parseHttpRequest(ChannelHandlerContext ctx, HttpRequest httpRequest) private class AdminServerInitializer extends ChannelInitializer { - @Override protected void initChannel(final SocketChannel channel) { final ChannelPipeline pipeline = channel.pipeline(); @@ -133,11 +126,10 @@ protected void initChannel(final SocketChannel channel) { new SimpleChannelInboundHandler() { @Override - protected void channelRead0(ChannelHandlerContext ctx, HttpRequest msg) throws Exception { + protected void channelRead0(ChannelHandlerContext ctx, HttpRequest msg) { parseHttpRequest(ctx, msg); } }); } } - } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java index 4c675a0f85..bf6c740b56 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/HTTPThreadPoolGroup.java @@ -73,7 +73,7 @@ public void initThreadPool() { new LinkedBlockingQueue<>(eventMeshHttpConfiguration.getEventMeshServerClientManageBlockQSize()), "eventMesh-clientManage", true); - // The runtimeAdminExecutor here is for the runtime.admin package and has nothing to do with the eventmesh-admin module. + // The runtimeAdminExecutor here is for the runtime.admin package. runtimeAdminExecutor = ThreadPoolFactory.createThreadPoolExecutor( eventMeshHttpConfiguration.getEventMeshServerAdminThreadNum(), eventMeshHttpConfiguration.getEventMeshServerAdminThreadNum(), @@ -82,8 +82,7 @@ public void initThreadPool() { replyMsgExecutor = ThreadPoolFactory.createThreadPoolExecutor( eventMeshHttpConfiguration.getEventMeshServerReplyMsgThreadNum(), eventMeshHttpConfiguration.getEventMeshServerReplyMsgThreadNum(), - new LinkedBlockingQueue<>(100), - "eventMesh-replyMsg", true); + new LinkedBlockingQueue<>(100), "eventMesh-replyMsg", true); webhookExecutor = ThreadPoolFactory.createThreadPoolExecutor( eventMeshHttpConfiguration.getEventMeshServerWebhookThreadNum(), diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventHttpHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventMeshHttpHandler.java similarity index 96% rename from eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventHttpHandler.java rename to eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventMeshHttpHandler.java index 25c2bcbd56..dd30f65e6a 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventHttpHandler.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/common/EventMeshHttpHandler.java @@ -26,7 +26,7 @@ @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) -public @interface EventHttpHandler { +public @interface EventMeshHttpHandler { /** * request path diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java index eee723aaa1..cf08f27553 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshGrpcConfiguration.java @@ -19,7 +19,7 @@ import org.apache.eventmesh.common.config.CommonConfiguration; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import org.apache.eventmesh.common.utils.IPUtils; import lombok.Data; @@ -32,76 +32,76 @@ @Config(prefix = "eventMesh.server") public class EventMeshGrpcConfiguration extends CommonConfiguration { - @ConfigFiled(field = "grpc.port", notNull = true, beNumber = true) + @ConfigField(field = "grpc.port", notNull = true, beNumber = true) private int grpcServerPort = 10205; - @ConfigFiled(field = "session.expiredInMills") + @ConfigField(field = "session.expiredInMills") private int eventMeshSessionExpiredInMills = 60000; - @ConfigFiled(field = "batchmsg.batch.enabled") + @ConfigField(field = "batchmsg.batch.enabled") private boolean eventMeshServerBatchMsgBatchEnabled = Boolean.TRUE; - @ConfigFiled(field = "batchmsg.threads.num") + @ConfigField(field = "batchmsg.threads.num") private int eventMeshServerBatchMsgThreadNum = 10; - @ConfigFiled(field = "sendmsg.threads.num") + @ConfigField(field = "sendmsg.threads.num") private int eventMeshServerSendMsgThreadNum = 8; - @ConfigFiled(field = "pushmsg.threads.num") + @ConfigField(field = "pushmsg.threads.num") private int eventMeshServerPushMsgThreadNum = 8; - @ConfigFiled(field = "replymsg.threads.num") + @ConfigField(field = "replymsg.threads.num") private int eventMeshServerReplyMsgThreadNum = 8; - @ConfigFiled(field = "clientmanage.threads.num") + @ConfigField(field = "clientmanage.threads.num") private int eventMeshServerSubscribeMsgThreadNum = 4; - @ConfigFiled(field = "metaStorage.threads.num") + @ConfigField(field = "metaStorage.threads.num") private int eventMeshServerMetaStorageThreadNum = 10; - @ConfigFiled(field = "admin.threads.num") + @ConfigField(field = "admin.threads.num") private int eventMeshServerAdminThreadNum = 2; - @ConfigFiled(field = "retry.threads.num") + @ConfigField(field = "retry.threads.num") private int eventMeshServerRetryThreadNum = 2; - @ConfigFiled(field = "pull.metaStorage.interval") + @ConfigField(field = "pull.metaStorage.interval") private int eventMeshServerPullMetaStorageInterval = 30000; - @ConfigFiled(field = "async.accumulation.threshold") + @ConfigField(field = "async.accumulation.threshold") private int eventMeshServerAsyncAccumulationThreshold = 1000; - @ConfigFiled(field = "retry.blockQ.size") + @ConfigField(field = "retry.blockQ.size") private int eventMeshServerRetryBlockQueueSize = 10000; - @ConfigFiled(field = "batchmsg.blockQ.size") + @ConfigField(field = "batchmsg.blockQ.size") private int eventMeshServerBatchBlockQueueSize = 1000; - @ConfigFiled(field = "sendmsg.blockQ.size") + @ConfigField(field = "sendmsg.blockQ.size") private int eventMeshServerSendMsgBlockQueueSize = 1000; - @ConfigFiled(field = "pushmsg.blockQ.size") + @ConfigField(field = "pushmsg.blockQ.size") private int eventMeshServerPushMsgBlockQueueSize = 1000; - @ConfigFiled(field = "clientM.blockQ.size") + @ConfigField(field = "clientM.blockQ.size") private int eventMeshServerSubscribeMsgBlockQueueSize = 1000; - @ConfigFiled(field = "busy.check.interval") + @ConfigField(field = "busy.check.interval") private int eventMeshServerBusyCheckInterval = 1000; - @ConfigFiled(field = "consumer.enabled") + @ConfigField(field = "consumer.enabled") private boolean eventMeshServerConsumerEnabled = false; - @ConfigFiled(field = "useTls.enabled") + @ConfigField(field = "useTls.enabled") private boolean eventMeshServerUseTls = false; - @ConfigFiled(field = "batchmsg.reqNumPerSecond") + @ConfigField(field = "batchmsg.reqNumPerSecond") private int eventMeshBatchMsgRequestNumPerSecond = 20000; - @ConfigFiled(field = "http.msgReqnumPerSecond") + @ConfigField(field = "http.msgReqnumPerSecond") private int eventMeshMsgReqNumPerSecond = 15000; - @ConfigFiled(field = "", reload = true) + @ConfigField(field = "", reload = true) private String eventMeshIp; public void reload() { diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java index a7ed9b26fe..b0fa18df4c 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshHTTPConfiguration.java @@ -19,7 +19,7 @@ import org.apache.eventmesh.common.config.CommonConfiguration; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import java.util.Collections; import java.util.List; @@ -36,100 +36,100 @@ @Config(prefix = "eventMesh.server") public class EventMeshHTTPConfiguration extends CommonConfiguration { - @ConfigFiled(field = "http.port", notNull = true, beNumber = true) + @ConfigField(field = "http.port", notNull = true, beNumber = true) private int httpServerPort = 10105; - @ConfigFiled(field = "batchmsg.batch.enabled") + @ConfigField(field = "batchmsg.batch.enabled") private boolean eventMeshServerBatchMsgBatchEnabled = Boolean.TRUE; - @ConfigFiled(field = "batchmsg.threads.num") + @ConfigField(field = "batchmsg.threads.num") private int eventMeshServerBatchMsgThreadNum = 10; - @ConfigFiled(field = "sendmsg.threads.num") + @ConfigField(field = "sendmsg.threads.num") private int eventMeshServerSendMsgThreadNum = 8; - @ConfigFiled(field = "remotemsg.threads.num") + @ConfigField(field = "remotemsg.threads.num") private int eventMeshServerRemoteMsgThreadNum = 8; - @ConfigFiled(field = "pushmsg.threads.num") + @ConfigField(field = "pushmsg.threads.num") private int eventMeshServerPushMsgThreadNum = 8; - @ConfigFiled(field = "replymsg.threads.num") + @ConfigField(field = "replymsg.threads.num") private int eventMeshServerReplyMsgThreadNum = 8; - @ConfigFiled(field = "clientmanage.threads.num") + @ConfigField(field = "clientmanage.threads.num") private int eventMeshServerClientManageThreadNum = 4; - @ConfigFiled(field = "metaStorage.threads.num") + @ConfigField(field = "metaStorage.threads.num") private int eventMeshServerMetaStorageThreadNum = 10; - @ConfigFiled(field = "admin.threads.num") + @ConfigField(field = "admin.threads.num") private int eventMeshServerAdminThreadNum = 2; - @ConfigFiled(field = "retry.threads.num") + @ConfigField(field = "retry.threads.num") private int eventMeshServerRetryThreadNum = 2; - @ConfigFiled(field = "") + @ConfigField(field = "") private int eventMeshServerWebhookThreadNum = 4; - @ConfigFiled(field = "pull.metaStorage.interval") + @ConfigField(field = "pull.metaStorage.interval") private int eventMeshServerPullMetaStorageInterval = 30000; - @ConfigFiled(field = "async.accumulation.threshold") + @ConfigField(field = "async.accumulation.threshold") private int eventMeshServerAsyncAccumulationThreshold = 1000; - @ConfigFiled(field = "retry.blockQ.size") + @ConfigField(field = "retry.blockQ.size") private int eventMeshServerRetryBlockQSize = 10000; - @ConfigFiled(field = "batchmsg.blockQ.size") + @ConfigField(field = "batchmsg.blockQ.size") private int eventMeshServerBatchBlockQSize = 1000; - @ConfigFiled(field = "sendmsg.blockQ.size") + @ConfigField(field = "sendmsg.blockQ.size") private int eventMeshServerSendMsgBlockQSize = 1000; - @ConfigFiled(field = "") + @ConfigField(field = "") private int eventMeshServerRemoteMsgBlockQSize = 1000; - @ConfigFiled(field = "pushmsg.blockQ.size") + @ConfigField(field = "pushmsg.blockQ.size") private int eventMeshServerPushMsgBlockQSize = 1000; - @ConfigFiled(field = "clientM.blockQ.size") + @ConfigField(field = "clientM.blockQ.size") private int eventMeshServerClientManageBlockQSize = 1000; - @ConfigFiled(field = "busy.check.interval") + @ConfigField(field = "busy.check.interval") private int eventMeshServerBusyCheckInterval = 1000; - @ConfigFiled(field = "consumer.enabled") + @ConfigField(field = "consumer.enabled") private boolean eventMeshServerConsumerEnabled = false; - @ConfigFiled(field = "useTls.enabled") + @ConfigField(field = "useTls.enabled") private boolean eventMeshServerUseTls = false; - @ConfigFiled(field = "ssl.protocol") + @ConfigField(field = "ssl.protocol") private String eventMeshServerSSLProtocol = "TLSv1.1"; - @ConfigFiled(field = "ssl.cer") + @ConfigField(field = "ssl.cer") private String eventMeshServerSSLCer = "sChat2.jks"; - @ConfigFiled(field = "ssl.pass") + @ConfigField(field = "ssl.pass") private String eventMeshServerSSLPass = "sNetty"; - @ConfigFiled(field = "http.msgReqnumPerSecond") + @ConfigField(field = "http.msgReqnumPerSecond") private int eventMeshHttpMsgReqNumPerSecond = 15000; - @ConfigFiled(field = "batchmsg.reqNumPerSecond") + @ConfigField(field = "batchmsg.reqNumPerSecond") private int eventMeshBatchMsgRequestNumPerSecond = 20000; - @ConfigFiled(field = "maxEventSize") + @ConfigField(field = "maxEventSize") private int eventMeshEventSize = 1000; - @ConfigFiled(field = "maxEventBatchSize") + @ConfigField(field = "maxEventBatchSize") private int eventMeshEventBatchSize = 10; - @ConfigFiled(field = "blacklist.ipv4") + @ConfigField(field = "blacklist.ipv4") private List eventMeshIpv4BlackList = Collections.emptyList(); - @ConfigFiled(field = "blacklist.ipv6") + @ConfigField(field = "blacklist.ipv6") private List eventMeshIpv6BlackList = Collections.emptyList(); } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java index 84871b582c..891f986167 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/configuration/EventMeshTCPConfiguration.java @@ -19,7 +19,7 @@ import org.apache.eventmesh.common.config.CommonConfiguration; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import lombok.AllArgsConstructor; import lombok.Data; @@ -32,105 +32,105 @@ @Config(prefix = "eventMesh.server") public class EventMeshTCPConfiguration extends CommonConfiguration { - @ConfigFiled(field = "tcp.port") + @ConfigField(field = "tcp.port") private int eventMeshTcpServerPort = 10000; - @ConfigFiled(field = "tcp.allIdleSeconds") + @ConfigField(field = "tcp.allIdleSeconds") private int eventMeshTcpIdleAllSeconds = 60; - @ConfigFiled(field = "tcp.writerIdleSeconds") + @ConfigField(field = "tcp.writerIdleSeconds") private int eventMeshTcpIdleWriteSeconds = 60; - @ConfigFiled(field = "tcp.readerIdleSeconds") + @ConfigField(field = "tcp.readerIdleSeconds") private int eventMeshTcpIdleReadSeconds = 60; - @ConfigFiled(field = "tcp.msgReqnumPerSecond") + @ConfigField(field = "tcp.msgReqnumPerSecond") private Integer eventMeshTcpMsgReqnumPerSecond = 15000; /** * TCP Server allows max client num */ - @ConfigFiled(field = "tcp.clientMaxNum") + @ConfigField(field = "tcp.clientMaxNum") private int eventMeshTcpClientMaxNum = 10000; // ======================================= New add config ================================= - @ConfigFiled(field = "global.scheduler") + @ConfigField(field = "global.scheduler") private int eventMeshTcpGlobalScheduler = 5; - @ConfigFiled(field = "tcp.taskHandleExecutorPoolSize") + @ConfigField(field = "tcp.taskHandleExecutorPoolSize") private int eventMeshTcpTaskHandleExecutorPoolSize = 2 * Runtime.getRuntime().availableProcessors(); - @ConfigFiled(field = "tcp.sendExecutorPoolSize") + @ConfigField(field = "tcp.sendExecutorPoolSize") private int eventMeshTcpMsgSendExecutorPoolSize = 2 * Runtime.getRuntime().availableProcessors(); - @ConfigFiled(field = "tcp.replyExecutorPoolSize") + @ConfigField(field = "tcp.replyExecutorPoolSize") private int eventMeshTcpMsgReplyExecutorPoolSize = 2 * Runtime.getRuntime().availableProcessors(); - @ConfigFiled(field = "tcp.ackExecutorPoolSize") + @ConfigField(field = "tcp.ackExecutorPoolSize") private int eventMeshTcpMsgAckExecutorPoolSize = 2 * Runtime.getRuntime().availableProcessors(); - @ConfigFiled(field = "tcp.taskHandleExecutorQueueSize") + @ConfigField(field = "tcp.taskHandleExecutorQueueSize") private int eventMeshTcpTaskHandleExecutorQueueSize = 10000; - @ConfigFiled(field = "tcp.sendExecutorQueueSize") + @ConfigField(field = "tcp.sendExecutorQueueSize") private int eventMeshTcpMsgSendExecutorQueueSize = 10000; - @ConfigFiled(field = "tcp.replyExecutorQueueSize") + @ConfigField(field = "tcp.replyExecutorQueueSize") private int eventMeshTcpMsgReplyExecutorQueueSize = 10000; - @ConfigFiled(field = "tcp.ackExecutorQueueSize") + @ConfigField(field = "tcp.ackExecutorQueueSize") private int eventMeshTcpMsgAckExecutorQueueSize = 10000; - @ConfigFiled(field = "tcp.msgDownStreamExecutorPoolSize") + @ConfigField(field = "tcp.msgDownStreamExecutorPoolSize") private int eventMeshTcpMsgDownStreamExecutorPoolSize = Math.max(Runtime.getRuntime().availableProcessors(), 8); - @ConfigFiled(field = "session.expiredInMills") + @ConfigField(field = "session.expiredInMills") private int eventMeshTcpSessionExpiredInMills = 60000; - @ConfigFiled(field = "session.upstreamBufferSize") + @ConfigField(field = "session.upstreamBufferSize") private int eventMeshTcpSessionUpstreamBufferSize = 100; - @ConfigFiled(field = "retry.async.pushRetryTimes") + @ConfigField(field = "retry.async.pushRetryTimes") private int eventMeshTcpMsgAsyncRetryTimes = 3; - @ConfigFiled(field = "retry.sync.pushRetryTimes") + @ConfigField(field = "retry.sync.pushRetryTimes") private int eventMeshTcpMsgSyncRetryTimes = 1; - @ConfigFiled(field = "retry.sync.pushRetryDelayInMills") + @ConfigField(field = "retry.sync.pushRetryDelayInMills") private int eventMeshTcpMsgRetrySyncDelayInMills = 500; - @ConfigFiled(field = "retry.async.pushRetryDelayInMills") + @ConfigField(field = "retry.async.pushRetryDelayInMills") private int eventMeshTcpMsgRetryAsyncDelayInMills = 500; - @ConfigFiled(field = "retry.pushRetryQueueSize") + @ConfigField(field = "retry.pushRetryQueueSize") private int eventMeshTcpMsgRetryQueueSize = 10000; - @ConfigFiled(field = "tcp.RebalanceIntervalInMills") + @ConfigField(field = "tcp.RebalanceIntervalInMills") private Integer eventMeshTcpRebalanceIntervalInMills = 30 * 1000; - @ConfigFiled(field = "admin.http.port") + @ConfigField(field = "admin.http.port") private int eventMeshServerAdminPort = 10106; - @ConfigFiled(field = "tcp.sendBack.enabled") + @ConfigField(field = "tcp.sendBack.enabled") private boolean eventMeshTcpSendBackEnabled = Boolean.TRUE; - @ConfigFiled(field = "tcp.SendBackMaxTimes") + @ConfigField(field = "tcp.SendBackMaxTimes") private int eventMeshTcpSendBackMaxTimes = 3; - @ConfigFiled(field = "tcp.pushFailIsolateTimeInMills") + @ConfigField(field = "tcp.pushFailIsolateTimeInMills") private int eventMeshTcpPushFailIsolateTimeInMills = 30 * 1000; - @ConfigFiled(field = "gracefulShutdown.sleepIntervalInMills") + @ConfigField(field = "gracefulShutdown.sleepIntervalInMills") private int gracefulShutdownSleepIntervalInMills = 1000; - @ConfigFiled(field = "rebalanceRedirect.sleepIntervalInM") + @ConfigField(field = "rebalanceRedirect.sleepIntervalInM") private int sleepIntervalInRebalanceRedirectMills = 200; - @ConfigFiled(field = "maxEventSize") + @ConfigField(field = "maxEventSize") private int eventMeshEventSize = 1000; - @ConfigFiled(field = "maxEventBatchSize") + @ConfigField(field = "maxEventBatchSize") private int eventMeshEventBatchSize = 10; private final TrafficShapingConfig gtc = new TrafficShapingConfig(0, 10_000, 1_000, 2_000); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/CreateTopicProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/CreateTopicProcessor.java index 3f364e9fa3..64a5ddfd90 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/CreateTopicProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/CreateTopicProcessor.java @@ -65,8 +65,6 @@ public void handler(HandlerService.HandlerSpecific handlerSpecific, HttpRequest final ChannelHandlerContext ctx = handlerSpecific.getCtx(); final HttpEventWrapper requestWrapper = asyncContext.getRequest(); - HttpEventWrapper responseWrapper; - HTTP_LOGGER.info("uri={}|{}|client2eventMesh|from={}|to={}", requestWrapper.getRequestURI(), EventMeshConstants.PROTOCOL_HTTP, RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); @@ -90,6 +88,8 @@ public void handler(HandlerService.HandlerSpecific handlerSpecific, HttpRequest new TypeReference>() { }); + HttpEventWrapper responseWrapper; + if (requestBodyMap.get("topic") == null || StringUtils.isBlank(requestBodyMap.get("topic").toString())) { Map responseBodyMap = new HashMap<>(); responseBodyMap.put("retCode", EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode()); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/DeleteTopicProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/DeleteTopicProcessor.java index be426c0fcd..0def2507f1 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/DeleteTopicProcessor.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/DeleteTopicProcessor.java @@ -67,8 +67,6 @@ public void handler(HandlerService.HandlerSpecific handlerSpecific, HttpRequest final ChannelHandlerContext ctx = handlerSpecific.getCtx(); final HttpEventWrapper requestWrapper = asyncContext.getRequest(); - HttpEventWrapper responseWrapper; - HTTP_LOGGER.info("uri={}|{}|client2eventMesh|from={}|to={}", requestWrapper.getRequestURI(), EventMeshConstants.PROTOCOL_HTTP, RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress()); @@ -92,6 +90,8 @@ public void handler(HandlerService.HandlerSpecific handlerSpecific, HttpRequest new TypeReference>() { }); + HttpEventWrapper responseWrapper; + if (requestBodyMap.get("topic") == null || StringUtils.isBlank(requestBodyMap.get("topic").toString())) { Map responseBodyMap = new HashMap<>(); responseBodyMap.put("retCode", EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode()); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java index 58149fc423..0c6437f8b7 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java @@ -328,14 +328,6 @@ private void error() { HandlerService.this.sendResponse(ctx, this.request, this.response); } - public void setResponseJsonBody(String body) { - this.sendResponse(HttpResponseUtils.setResponseJsonBody(body, ctx)); - } - - public void setResponseTextBody(String body) { - this.sendResponse(HttpResponseUtils.setResponseTextBody(body, ctx)); - } - public void sendResponse(HttpResponse response) { this.response = response; this.postHandler(ConnectionType.PERSISTENT); diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpRequestUtil.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpRequestUtil.java index ecfcd0e198..a8e1288f79 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpRequestUtil.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpRequestUtil.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Objects; import java.util.function.Consumer; @@ -57,6 +58,10 @@ public static Map parseHttpRequestBody(final HttpRequest htt return httpRequestBody; } + public static Map parseHttpRequestBody(final HttpRequest httpRequest) throws IOException { + return parseHttpRequestBody(httpRequest, null, null); + } + private static void decodeHttpRequestBody(HttpRequest httpRequest, Map httpRequestBody) throws IOException { final HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(DEFAULT_HTTP_DATA_FACTORY, httpRequest); for (final InterfaceHttpData param : decoder.getBodyHttpDatas()) { @@ -68,4 +73,47 @@ private static void decodeHttpRequestBody(HttpRequest httpRequest, Map + * This method takes a query string and parses it to create a map of key-value pairs, where each key and value are extracted from the query string + * separated by '='. + *

+ * If the query string is null, an empty map is returned. + * + * @param queryString the query string to convert to a map + * @return a map containing the key-value pairs from the query string + */ + public static Map queryStringToMap(String queryString) { + if (queryString == null) { + return new HashMap<>(); + } + Map result = new HashMap<>(); + for (String param : queryString.split("&")) { + String[] entry = param.split("="); + if (entry.length > 1) { + result.put(entry[0], entry[1]); + } else { + result.put(entry[0], ""); + } + } + return result; + } + + /** + * Get the value of a query parameter in URI query string. + */ + public static String getQueryParam(HttpRequest httpRequest, String key, String defaultValue) { + List values = new QueryStringDecoder(httpRequest.uri()).parameters().get(key); + return values != null ? values.get(0) : defaultValue; + } + + /** + * Get the value of a query parameter in body. + */ + public static String getBodyParam(HttpRequest httpRequest, String key) throws IOException { + HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(httpRequest); + Attribute attribute = (Attribute) decoder.getBodyHttpData(key); + return attribute.getValue(); + } } diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpResponseUtils.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpResponseUtils.java index 0db7e58c30..b24cfeab89 100644 --- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpResponseUtils.java +++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/util/HttpResponseUtils.java @@ -18,13 +18,13 @@ package org.apache.eventmesh.runtime.util; import org.apache.eventmesh.common.Constants; +import org.apache.eventmesh.runtime.constants.EventMeshConstants; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.http.DefaultFullHttpResponse; import io.netty.handler.codec.http.DefaultHttpHeaders; import io.netty.handler.codec.http.HttpHeaderNames; -import io.netty.handler.codec.http.HttpHeaderValues; import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpResponse; import io.netty.handler.codec.http.HttpResponseStatus; @@ -33,59 +33,51 @@ public class HttpResponseUtils { + /** + * @return Empty response with 200 status code. + */ public static HttpResponse createSuccess() { return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK); } + /** + * @return Empty response with 404 status code. + */ public static HttpResponse createNotFound() { return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_FOUND); } + /** + * @return Empty response with 500 status code. + */ public static HttpResponse createInternalServerError() { return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR); } - private static ByteBuf createByteBuf(ChannelHandlerContext ctx, String body) { - byte[] bytes = body.getBytes(Constants.DEFAULT_CHARSET); - return createByteBuf(ctx, bytes); - } - - private static ByteBuf createByteBuf(ChannelHandlerContext ctx, byte[] bytes) { - ByteBuf byteBuf = ctx.alloc().buffer(bytes.length); - byteBuf.writeBytes(bytes); - return byteBuf; - } - - public static HttpResponse setResponseJsonBody(String body, ChannelHandlerContext ctx) { - return getHttpResponse(body, ctx, HttpHeaderValues.APPLICATION_JSON); - - } - - public static HttpResponse setResponseTextBody(String body, ChannelHandlerContext ctx) { - return getHttpResponse(body, ctx, HttpHeaderValues.TEXT_HTML); - } - - public static HttpResponse getHttpResponse(String body, ChannelHandlerContext ctx, AsciiString headerValue) { + /** + * Only one header is set: {@link HttpHeaderNames#CONTENT_TYPE} with the provided {@code headerValue}. + */ + public static HttpResponse buildHttpResponse(String body, ChannelHandlerContext ctx, AsciiString headerValue, HttpResponseStatus status) { HttpHeaders responseHeaders = new DefaultHttpHeaders(); responseHeaders.add(HttpHeaderNames.CONTENT_TYPE, headerValue); - return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, createByteBuf(ctx, body), - responseHeaders, responseHeaders); + return buildHttpResponse(body, ctx, responseHeaders, status); } - public static HttpResponse getHttpResponse(byte[] bytes, ChannelHandlerContext ctx, AsciiString headerValue) { - return getHttpResponse(bytes, ctx, headerValue, HttpResponseStatus.OK); + public static HttpResponse buildHttpResponse(String body, ChannelHandlerContext ctx, HttpHeaders responseHeaders, HttpResponseStatus status) { + return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status, createByteBuf(ctx, body), responseHeaders, responseHeaders); } - public static HttpResponse getHttpResponse(byte[] bytes, ChannelHandlerContext ctx, AsciiString headerValue, HttpResponseStatus status) { + public static HttpHeaders buildDefaultHttpHeaders(AsciiString contentType) { HttpHeaders responseHeaders = new DefaultHttpHeaders(); - responseHeaders.add(HttpHeaderNames.CONTENT_TYPE, headerValue); - return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status, createByteBuf(ctx, bytes), - responseHeaders, responseHeaders); + responseHeaders.add(HttpHeaderNames.CONTENT_TYPE, contentType); + responseHeaders.add(EventMeshConstants.HANDLER_ORIGIN, "*"); + return responseHeaders; } - public static HttpResponse getHttpResponse(byte[] bytes, ChannelHandlerContext ctx, HttpHeaders responseHeaders, HttpResponseStatus status) { - return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status, createByteBuf(ctx, bytes), - responseHeaders, responseHeaders); + private static ByteBuf createByteBuf(ChannelHandlerContext ctx, String body) { + byte[] bytes = body.getBytes(Constants.DEFAULT_CHARSET); + ByteBuf byteBuf = ctx.alloc().buffer(bytes.length); + byteBuf.writeBytes(bytes); + return byteBuf; } - } diff --git a/eventmesh-security-plugin/eventmesh-security-auth-http-basic/src/main/java/org/apache/eventmesh/auth/http/basic/config/AuthConfigs.java b/eventmesh-security-plugin/eventmesh-security-auth-http-basic/src/main/java/org/apache/eventmesh/auth/http/basic/config/AuthConfigs.java index d9441c3a9a..f1d56d4e7f 100644 --- a/eventmesh-security-plugin/eventmesh-security-auth-http-basic/src/main/java/org/apache/eventmesh/auth/http/basic/config/AuthConfigs.java +++ b/eventmesh-security-plugin/eventmesh-security-auth-http-basic/src/main/java/org/apache/eventmesh/auth/http/basic/config/AuthConfigs.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.auth.http.basic.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import lombok.Data; @@ -26,9 +26,9 @@ @Config(prefix = "auth", path = "classPath://auth-http-basic.properties") public class AuthConfigs { - @ConfigFiled(field = "username") + @ConfigField(field = "username") private String username; - @ConfigFiled(field = "password") + @ConfigField(field = "password") public String password; } diff --git a/eventmesh-storage-plugin/eventmesh-storage-kafka/src/main/java/org/apache/eventmesh/storage/kafka/config/ClientConfiguration.java b/eventmesh-storage-plugin/eventmesh-storage-kafka/src/main/java/org/apache/eventmesh/storage/kafka/config/ClientConfiguration.java index 2e92877ec0..0eff16ec7c 100644 --- a/eventmesh-storage-plugin/eventmesh-storage-kafka/src/main/java/org/apache/eventmesh/storage/kafka/config/ClientConfiguration.java +++ b/eventmesh-storage-plugin/eventmesh-storage-kafka/src/main/java/org/apache/eventmesh/storage/kafka/config/ClientConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.storage.kafka.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import lombok.AllArgsConstructor; import lombok.Builder; @@ -32,75 +32,75 @@ @AllArgsConstructor public class ClientConfiguration { - @ConfigFiled(field = "namesrvAddr", notEmpty = true) + @ConfigField(field = "namesrvAddr", notEmpty = true) @Builder.Default private String namesrvAddr = ""; - @ConfigFiled(field = "username") + @ConfigField(field = "username") @Builder.Default private String clientUserName = "username"; - @ConfigFiled(field = "password") + @ConfigField(field = "password") @Builder.Default private String clientPass = "password"; - @ConfigFiled(field = "num.partitions") + @ConfigField(field = "num.partitions") @Builder.Default private int partitions = 1; - @ConfigFiled(field = "num.replicationFactors") + @ConfigField(field = "num.replicationFactors") @Builder.Default private short replicationFactors = 1; - @ConfigFiled(field = "client.consumeThreadMin") + @ConfigField(field = "client.consumeThreadMin") @Builder.Default private Integer consumeThreadMin = 2; - @ConfigFiled(field = "client.consumeThreadMax") + @ConfigField(field = "client.consumeThreadMax") @Builder.Default private Integer consumeThreadMax = 2; - @ConfigFiled(field = "client.consumeThreadPoolQueueSize") + @ConfigField(field = "client.consumeThreadPoolQueueSize") @Builder.Default private Integer consumeQueueSize = 10000; - @ConfigFiled(field = "client.pullBatchSize") + @ConfigField(field = "client.pullBatchSize") @Builder.Default private Integer pullBatchSize = 32; - @ConfigFiled(field = "client.ackwindow") + @ConfigField(field = "client.ackwindow") @Builder.Default private Integer ackWindow = 1000; - @ConfigFiled(field = "client.pubwindow") + @ConfigField(field = "client.pubwindow") @Builder.Default private Integer pubWindow = 100; - @ConfigFiled(field = "client.comsumeTimeoutInMin") + @ConfigField(field = "client.comsumeTimeoutInMin") @Builder.Default private long consumeTimeout = 0L; - @ConfigFiled(field = "client.pollNameServerInterval") + @ConfigField(field = "client.pollNameServerInterval") @Builder.Default private Integer pollNameServerInterval = 10 * 1000; - @ConfigFiled(field = "client.heartbeatBrokerInterval") + @ConfigField(field = "client.heartbeatBrokerInterval") @Builder.Default private Integer heartbeatBrokerInterval = 30 * 1000; - @ConfigFiled(field = "client.rebalanceInterval") + @ConfigField(field = "client.rebalanceInterval") @Builder.Default private Integer rebalanceInterval = 20 * 1000; - @ConfigFiled(field = "cluster") + @ConfigField(field = "cluster") @Builder.Default private String clusterName = ""; - @ConfigFiled(field = "accessKey") + @ConfigField(field = "accessKey") @Builder.Default private String accessKey = ""; - @ConfigFiled(field = "secretKey") + @ConfigField(field = "secretKey") @Builder.Default private String secretKey = ""; } diff --git a/eventmesh-storage-plugin/eventmesh-storage-pulsar/src/main/java/org/apache/eventmesh/storage/pulsar/config/ClientConfiguration.java b/eventmesh-storage-plugin/eventmesh-storage-pulsar/src/main/java/org/apache/eventmesh/storage/pulsar/config/ClientConfiguration.java index 855faf80c8..f84628cf05 100644 --- a/eventmesh-storage-plugin/eventmesh-storage-pulsar/src/main/java/org/apache/eventmesh/storage/pulsar/config/ClientConfiguration.java +++ b/eventmesh-storage-plugin/eventmesh-storage-pulsar/src/main/java/org/apache/eventmesh/storage/pulsar/config/ClientConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.storage.pulsar.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import lombok.Getter; import lombok.Setter; @@ -28,19 +28,19 @@ @Config(prefix = "eventMesh.server.pulsar", path = "classPath://pulsar-client.properties") public class ClientConfiguration { - @ConfigFiled(field = "service") + @ConfigField(field = "service") private String serviceAddr; - @ConfigFiled(field = "authPlugin") + @ConfigField(field = "authPlugin") private String authPlugin; - @ConfigFiled(field = "authParams") + @ConfigField(field = "authParams") private String authParams; /* * the full format of topic needs a prefix, but the prefix cannot be passed in the url when the topic is carried * */ - @ConfigFiled(field = "topicPrefix") + @ConfigField(field = "topicPrefix") private String topicPrefix; } \ No newline at end of file diff --git a/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/config/ConfigurationHolder.java b/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/config/ConfigurationHolder.java index 1bd1f6dc11..890e7d6d0d 100644 --- a/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/config/ConfigurationHolder.java +++ b/eventmesh-storage-plugin/eventmesh-storage-rabbitmq/src/main/java/org/apache/eventmesh/storage/rabbitmq/config/ConfigurationHolder.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.storage.rabbitmq.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import com.rabbitmq.client.BuiltinExchangeType; @@ -28,39 +28,39 @@ @Config(prefix = "eventMesh.server.rabbitmq", path = "classPath://rabbitmq-client.properties") public class ConfigurationHolder { - @ConfigFiled(field = "host") + @ConfigField(field = "host") private String host; - @ConfigFiled(field = "port") + @ConfigField(field = "port") private int port; - @ConfigFiled(field = "username") + @ConfigField(field = "username") private String username; - @ConfigFiled(field = "passwd") + @ConfigField(field = "passwd") private String passwd; - @ConfigFiled(field = "virtualHost") + @ConfigField(field = "virtualHost") private String virtualHost; - @ConfigFiled(field = "exchangeType") + @ConfigField(field = "exchangeType") private BuiltinExchangeType exchangeType; - @ConfigFiled(field = "exchangeName") + @ConfigField(field = "exchangeName") private String exchangeName; - @ConfigFiled(field = "routingKey") + @ConfigField(field = "routingKey") private String routingKey; - @ConfigFiled(field = "queueName") + @ConfigField(field = "queueName") private String queueName; - @ConfigFiled(field = "autoAck") + @ConfigField(field = "autoAck") private boolean autoAck; - @ConfigFiled(field = "mgmt.port") + @ConfigField(field = "mgmt.port") private int mgmtPort; - @ConfigFiled(field = "mgmt.protocol") + @ConfigField(field = "mgmt.protocol") private String mgmtProtocol; } diff --git a/eventmesh-storage-plugin/eventmesh-storage-redis/src/main/java/org/apache/eventmesh/storage/redis/config/RedisProperties.java b/eventmesh-storage-plugin/eventmesh-storage-redis/src/main/java/org/apache/eventmesh/storage/redis/config/RedisProperties.java index dd01837397..a478e7a70f 100644 --- a/eventmesh-storage-plugin/eventmesh-storage-redis/src/main/java/org/apache/eventmesh/storage/redis/config/RedisProperties.java +++ b/eventmesh-storage-plugin/eventmesh-storage-redis/src/main/java/org/apache/eventmesh/storage/redis/config/RedisProperties.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.storage.redis.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import java.util.Properties; @@ -31,31 +31,31 @@ public class RedisProperties { /** * The redis server configuration to be used. */ - @ConfigFiled(field = "serverType") + @ConfigField(field = "serverType") private ServerType serverType = ServerType.SINGLE; /** * The master server name used by Redis Sentinel servers and master change monitoring task. */ - @ConfigFiled(field = "serverMasterName") + @ConfigField(field = "serverMasterName") private String serverMasterName = "master"; /** * The address of the redis server following format -- host1:port1,host2:port2,…… */ - @ConfigFiled(field = "serverAddress") + @ConfigField(field = "serverAddress") private String serverAddress; /** * The password for redis authentication. */ - @ConfigFiled(field = "serverPassword") + @ConfigField(field = "serverPassword") private String serverPassword; /** * The redisson options, redisson properties prefix is `eventMesh.server.redis.redisson` */ - @ConfigFiled(field = "redisson") + @ConfigField(field = "redisson") private Properties redissonProperties; public enum ServerType { diff --git a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/config/ClientConfiguration.java b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/config/ClientConfiguration.java index 04654a6b3e..b1748de895 100644 --- a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/config/ClientConfiguration.java +++ b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/config/ClientConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.storage.rocketmq.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import lombok.AllArgsConstructor; import lombok.Builder; @@ -32,67 +32,67 @@ @NoArgsConstructor public class ClientConfiguration { - @ConfigFiled(field = "namesrvAddr", notEmpty = true) + @ConfigField(field = "namesrvAddr", notEmpty = true) @Builder.Default private String namesrvAddr = ""; - @ConfigFiled(field = "username") + @ConfigField(field = "username") @Builder.Default private String clientUserName = "username"; - @ConfigFiled(field = "password") + @ConfigField(field = "password") @Builder.Default private String clientPass = "password"; - @ConfigFiled(field = "client.consumeThreadMin") + @ConfigField(field = "client.consumeThreadMin") @Builder.Default private Integer consumeThreadMin = 2; - @ConfigFiled(field = "client.consumeThreadMax") + @ConfigField(field = "client.consumeThreadMax") @Builder.Default private Integer consumeThreadMax = 2; - @ConfigFiled(field = "client.consumeThreadPoolQueueSize") + @ConfigField(field = "client.consumeThreadPoolQueueSize") @Builder.Default private Integer consumeQueueSize = 10000; - @ConfigFiled(field = "client.pullBatchSize") + @ConfigField(field = "client.pullBatchSize") @Builder.Default private Integer pullBatchSize = 32; - @ConfigFiled(field = "client.ackwindow") + @ConfigField(field = "client.ackwindow") @Builder.Default private Integer ackWindow = 1000; - @ConfigFiled(field = "client.pubwindow") + @ConfigField(field = "client.pubwindow") @Builder.Default private Integer pubWindow = 100; - @ConfigFiled(field = "client.comsumeTimeoutInMin") + @ConfigField(field = "client.comsumeTimeoutInMin") @Builder.Default private long consumeTimeout = 0L; - @ConfigFiled(field = "client.pollNameServerInterval") + @ConfigField(field = "client.pollNameServerInterval") @Builder.Default private Integer pollNameServerInterval = 10 * 1000; - @ConfigFiled(field = "client.heartbeatBrokerInterval") + @ConfigField(field = "client.heartbeatBrokerInterval") @Builder.Default private Integer heartbeatBrokerInterval = 30 * 1000; - @ConfigFiled(field = "client.rebalanceInterval") + @ConfigField(field = "client.rebalanceInterval") @Builder.Default private Integer rebalanceInterval = 20 * 1000; - @ConfigFiled(field = "cluster") + @ConfigField(field = "cluster") @Builder.Default private String clusterName = ""; - @ConfigFiled(field = "accessKey") + @ConfigField(field = "accessKey") @Builder.Default private String accessKey = ""; - @ConfigFiled(field = "secretKey") + @ConfigField(field = "secretKey") @Builder.Default private String secretKey = ""; } diff --git a/eventmesh-trace-plugin/eventmesh-trace-api/src/main/java/org/apache/eventmesh/trace/api/config/ExporterConfiguration.java b/eventmesh-trace-plugin/eventmesh-trace-api/src/main/java/org/apache/eventmesh/trace/api/config/ExporterConfiguration.java index b59eed4431..ab42241e0a 100644 --- a/eventmesh-trace-plugin/eventmesh-trace-api/src/main/java/org/apache/eventmesh/trace/api/config/ExporterConfiguration.java +++ b/eventmesh-trace-plugin/eventmesh-trace-api/src/main/java/org/apache/eventmesh/trace/api/config/ExporterConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.trace.api.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import lombok.Data; @@ -29,15 +29,15 @@ @Config(prefix = "eventmesh.trace", path = "classPath://exporter.properties") public class ExporterConfiguration { - @ConfigFiled(field = "max.export.size") + @ConfigField(field = "max.export.size") private int eventMeshTraceMaxExportSize = 512; - @ConfigFiled(field = "max.queue.size") + @ConfigField(field = "max.queue.size") private int eventMeshTraceMaxQueueSize = 2048; - @ConfigFiled(field = "export.timeout") + @ConfigField(field = "export.timeout") private int eventMeshTraceExportTimeout = 30; - @ConfigFiled(field = "export.interval") + @ConfigField(field = "export.interval") private int eventMeshTraceExportInterval = 5; } diff --git a/eventmesh-trace-plugin/eventmesh-trace-jaeger/src/main/java/org/apache/eventmesh/trace/jaeger/config/JaegerConfiguration.java b/eventmesh-trace-plugin/eventmesh-trace-jaeger/src/main/java/org/apache/eventmesh/trace/jaeger/config/JaegerConfiguration.java index 1e60ca665f..2284a4f22c 100644 --- a/eventmesh-trace-plugin/eventmesh-trace-jaeger/src/main/java/org/apache/eventmesh/trace/jaeger/config/JaegerConfiguration.java +++ b/eventmesh-trace-plugin/eventmesh-trace-jaeger/src/main/java/org/apache/eventmesh/trace/jaeger/config/JaegerConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.trace.jaeger.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import lombok.Data; @@ -26,9 +26,9 @@ @Config(prefix = "eventmesh.trace.jaeger", path = "classPath://jaeger.properties") public class JaegerConfiguration { - @ConfigFiled(field = "ip", notEmpty = true) + @ConfigField(field = "ip", notEmpty = true) private String eventMeshJaegerIp = "localhost"; - @ConfigFiled(field = "port", notEmpty = true) + @ConfigField(field = "port", notEmpty = true) private int eventMeshJaegerPort = 14250; } \ No newline at end of file diff --git a/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/config/PinpointConfiguration.java b/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/config/PinpointConfiguration.java index 8ffe6655fc..dd29412521 100644 --- a/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/config/PinpointConfiguration.java +++ b/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/config/PinpointConfiguration.java @@ -19,7 +19,7 @@ import org.apache.eventmesh.common.Constants; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import org.apache.eventmesh.common.exception.JsonException; import org.apache.eventmesh.common.utils.RandomStringUtils; @@ -37,16 +37,16 @@ @Config(prefix = "eventmesh.trace.pinpoint", path = "classPath://pinpoint.properties") public final class PinpointConfiguration { - @ConfigFiled(field = "agentId", reload = true) + @ConfigField(field = "agentId", reload = true) private String agentId; - @ConfigFiled(field = "agentName", reload = true) + @ConfigField(field = "agentName", reload = true) private String agentName; - @ConfigFiled(field = "applicationName", findEnv = true, notNull = true) + @ConfigField(field = "applicationName", findEnv = true, notNull = true) private String applicationName; - @ConfigFiled(field = "", reload = true) + @ConfigField(field = "", reload = true) private Properties grpcTransportProperties; private GrpcTransportConfig grpcTransportConfig; diff --git a/eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java b/eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java index fcc2ac0dec..ed24036878 100644 --- a/eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java +++ b/eventmesh-trace-plugin/eventmesh-trace-zipkin/src/main/java/org/apache/eventmesh/trace/zipkin/config/ZipkinConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.trace.zipkin.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import lombok.Data; @@ -30,9 +30,9 @@ @Config(prefix = "eventmesh.trace.zipkin", path = "classPath://zipkin.properties") public class ZipkinConfiguration { - @ConfigFiled(field = "ip", notNull = true) + @ConfigField(field = "ip", notNull = true) private String eventMeshZipkinIP = "localhost"; - @ConfigFiled(field = "port") + @ConfigField(field = "port") private int eventMeshZipkinPort = 9411; } diff --git a/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/config/AdminConfiguration.java b/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/config/AdminConfiguration.java index 93327d54bf..1bbba42fe8 100644 --- a/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/config/AdminConfiguration.java +++ b/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/config/AdminConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.webhook.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import java.util.Properties; @@ -28,13 +28,13 @@ @Config(prefix = "eventMesh.webHook") public class AdminConfiguration { - @ConfigFiled(field = "admin.start") + @ConfigField(field = "admin.start") private boolean adminStart = false; - @ConfigFiled(field = "operationMode") + @ConfigField(field = "operationMode") private String operationMode; - @ConfigFiled(field = "", reload = true) + @ConfigField(field = "", reload = true) private Properties operationProperties; public void reload() { diff --git a/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/config/ReceiveConfiguration.java b/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/config/ReceiveConfiguration.java index 3d3004c5ce..fef6cee41b 100644 --- a/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/config/ReceiveConfiguration.java +++ b/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/config/ReceiveConfiguration.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.webhook.receive.config; import org.apache.eventmesh.common.config.Config; -import org.apache.eventmesh.common.config.ConfigFiled; +import org.apache.eventmesh.common.config.ConfigField; import java.util.Properties; @@ -28,16 +28,16 @@ @Config(prefix = "eventMesh.webHook") public class ReceiveConfiguration { - @ConfigFiled(field = "producer.storage") + @ConfigField(field = "producer.storage") private String storagePluginType; - @ConfigFiled(field = "operationMode") + @ConfigField(field = "operationMode") private String operationMode; - @ConfigFiled(field = "fileMode.filePath") + @ConfigField(field = "fileMode.filePath") private String filePath; - @ConfigFiled(field = "", reload = true) + @ConfigField(field = "", reload = true) private Properties operationProperties; public void reload() { diff --git a/tools/dependency-check/known-dependencies.txt b/tools/dependency-check/known-dependencies.txt index ccf34353e3..4cedc91657 100644 --- a/tools/dependency-check/known-dependencies.txt +++ b/tools/dependency-check/known-dependencies.txt @@ -79,6 +79,7 @@ error_prone_annotations-2.9.0.jar eventstream-1.0.1.jar failureaccess-1.0.1.jar fastjson-1.2.83.jar +fastjson2-2.0.48.jar gateway-dingtalk-1.0.2.jar google-auth-library-credentials-0.22.2.jar grpc-api-1.43.2.jar