This is an automated email from the ASF dual-hosted git repository.
mxsm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/eventmesh.git
The following commit(s) were added to refs/heads/master by this push:
new 31b4e96a7 [ISSUE#4459] Fix unchecked call to a original type member
(#4506)
31b4e96a7 is described below
commit 31b4e96a7d9a2225a383409ac60c7f53f4a6949a
Author: yanrongzhen <[email protected]>
AuthorDate: Tue Oct 24 09:06:48 2023 +0800
[ISSUE#4459] Fix unchecked call to a original type member (#4506)
* Fix compile warnings.
* fix exception
---
.../apache/eventmesh/common/utils/TypeUtils.java | 38 ++++++++++++++++++++++
.../eventmesh/common/utils/TypeUtilsTest.java | 38 ++++++++++++++++++++++
.../prometheus/metrics/PrometheusGrpcExporter.java | 3 +-
.../prometheus/metrics/PrometheusHttpExporter.java | 3 +-
.../prometheus/metrics/PrometheusTcpExporter.java | 3 +-
.../prometheus/utils/PrometheusExporterUtils.java | 10 +++---
.../http/processor/inf/HttpRequestProcessor.java | 4 +--
.../auth/token/impl/auth/AuthTokenUtils.java | 10 +++---
.../rocketmq/consumer/PushConsumerImpl.java | 1 +
9 files changed, 96 insertions(+), 14 deletions(-)
diff --git
a/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/TypeUtils.java
b/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/TypeUtils.java
new file mode 100644
index 000000000..bac2365a8
--- /dev/null
+++
b/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/TypeUtils.java
@@ -0,0 +1,38 @@
+/*
+ * 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.common.utils;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import lombok.experimental.UtilityClass;
+
+@UtilityClass
+public class TypeUtils {
+
+ public static <T> Set<T> castSet(Object obj, Class<T> clazz) {
+ Set<T> result = new HashSet<>();
+ if (obj instanceof Set<?>) {
+ for (Object o : (Set<?>) obj) {
+ result.add(clazz.cast(o));
+ }
+ return result;
+ }
+ return null;
+ }
+}
diff --git
a/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/TypeUtilsTest.java
b/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/TypeUtilsTest.java
new file mode 100644
index 000000000..fcd83642e
--- /dev/null
+++
b/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/TypeUtilsTest.java
@@ -0,0 +1,38 @@
+/*
+ * 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.common.utils;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class TypeUtilsTest {
+
+ @Test
+ public void testCastSet() {
+ Set<String> set = new HashSet<>(Arrays.asList("1", "2", "3"));
+ Set<String> newSet = TypeUtils.castSet(set, String.class);
+ for (String s : set) {
+ Assertions.assertTrue(newSet.contains(s));
+ }
+ Assertions.assertEquals(set.size(), newSet.size());
+ }
+}
diff --git
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusGrpcExporter.java
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusGrpcExporter.java
index c4500de05..7838753fb 100644
---
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusGrpcExporter.java
+++
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusGrpcExporter.java
@@ -61,6 +61,7 @@ public class PrometheusGrpcExporter {
final Meter meter = GlobalMeterProvider.getMeter(meterName);
paramPairs.forEach(
- (metricInfo, getMetric) -> observeOfValue(meter,
METRICS_GRPC_PREFIX + metricInfo[0], metricInfo[1], GRPC, summaryMetrics,
getMetric));
+ (metricInfo, getMetric) -> observeOfValue(meter,
METRICS_GRPC_PREFIX + metricInfo[0], metricInfo[1],
+ GRPC, summaryMetrics, getMetric, GrpcSummaryMetrics.class));
}
}
diff --git
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusHttpExporter.java
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusHttpExporter.java
index d8b5181f0..bb14e321d 100644
---
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusHttpExporter.java
+++
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusHttpExporter.java
@@ -178,7 +178,8 @@ public class PrometheusHttpExporter {
public void export(String name, HttpSummaryMetrics summaryMetrics) {
Meter meter = GlobalMeterProvider.getMeter(name);
- paramPairs.forEach((metricInfo, getMetric) -> observeOfValue(meter,
metricInfo[0], metricInfo[1], HTTP, summaryMetrics, getMetric));
+ paramPairs.forEach((metricInfo, getMetric) -> observeOfValue(meter,
metricInfo[0], metricInfo[1],
+ HTTP, summaryMetrics, getMetric, HttpSummaryMetrics.class));
}
}
diff --git
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusTcpExporter.java
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusTcpExporter.java
index e468552e0..d615566e1 100644
---
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusTcpExporter.java
+++
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusTcpExporter.java
@@ -81,6 +81,7 @@ public class PrometheusTcpExporter {
public void export(final String meterName, final TcpSummaryMetrics
summaryMetrics) {
final Meter meter = GlobalMeterProvider.getMeter(meterName);
paramPairs.forEach(
- (metricInfo, getMetric) -> observeOfValue(meter,
METRICS_TCP_PREFIX + metricInfo[0], metricInfo[1], TCP, summaryMetrics,
getMetric));
+ (metricInfo, getMetric) -> observeOfValue(meter,
METRICS_TCP_PREFIX + metricInfo[0], metricInfo[1],
+ TCP, summaryMetrics, getMetric, TcpSummaryMetrics.class));
}
}
diff --git
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/utils/PrometheusExporterUtils.java
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/utils/PrometheusExporterUtils.java
index e387e0d2f..3f43c908c 100644
---
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/utils/PrometheusExporterUtils.java
+++
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/utils/PrometheusExporterUtils.java
@@ -43,21 +43,21 @@ public class PrometheusExporterUtils {
* @param getMetric
*/
@SneakyThrows
- public static void observeOfValue(Meter meter, String metricName, String
metricDesc, String protocol,
- Metric summaryMetrics, Function getMetric) {
+ public static <T extends Metric> void observeOfValue(Meter meter, String
metricName, String metricDesc, String protocol,
+ Metric summaryMetrics, Function<T, Number> getMetric, Class<T> clazz) {
Method method = getMetric.getClass().getMethod("apply", Object.class);
- Class metricType = (Class) method.getGenericReturnType();
+ Class<?> metricType = (Class<?>) method.getGenericReturnType();
if (metricType == Long.class) {
meter.longValueObserverBuilder(metricName)
.setDescription(metricDesc)
.setUnit(protocol)
- .setUpdater(result -> result.observe((long)
getMetric.apply(summaryMetrics), Labels.empty()))
+ .setUpdater(result -> result.observe((long)
getMetric.apply(clazz.cast(summaryMetrics)), Labels.empty()))
.build();
} else if (metricType == Double.class) {
meter.doubleValueObserverBuilder(metricName)
.setDescription(metricDesc)
.setUnit(protocol)
- .setUpdater(result -> result.observe((double)
getMetric.apply(summaryMetrics), Labels.empty()))
+ .setUpdater(result -> result.observe((double)
getMetric.apply(clazz.cast(summaryMetrics)), Labels.empty()))
.build();
}
}
diff --git
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/HttpRequestProcessor.java
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/HttpRequestProcessor.java
index edbc0ca35..570f11c99 100644
---
a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/HttpRequestProcessor.java
+++
b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/HttpRequestProcessor.java
@@ -48,14 +48,14 @@ public interface HttpRequestProcessor {
return false;
}
- default <T extends Header, E extends Body> void
completeResponse(HttpCommand req, AsyncContext asyncContext,
+ default <T extends Header, E extends Body> void
completeResponse(HttpCommand req, AsyncContext<HttpCommand> asyncContext,
T respHeader, EventMeshRetCode emCode,
String msg, Class<E> clazz) {
try {
Method method = clazz.getMethod("buildBody", Integer.class,
String.class);
Object o = method.invoke(null, emCode.getRetCode(),
StringUtils.isNotBlank(msg) ? msg : emCode.getErrMsg());
- HttpCommand response = req.createHttpCommandResponse(respHeader,
(E) o);
+ HttpCommand response = req.createHttpCommandResponse(respHeader,
(Body) o);
asyncContext.onComplete(response);
} catch (Exception e) {
log.error("response failed", e);
diff --git
a/eventmesh-security-plugin/eventmesh-security-auth-token/src/main/java/org/apache/eventmesh/auth/token/impl/auth/AuthTokenUtils.java
b/eventmesh-security-plugin/eventmesh-security-auth-token/src/main/java/org/apache/eventmesh/auth/token/impl/auth/AuthTokenUtils.java
index 68dca1a2c..ac55f88c9 100644
---
a/eventmesh-security-plugin/eventmesh-security-auth-token/src/main/java/org/apache/eventmesh/auth/token/impl/auth/AuthTokenUtils.java
+++
b/eventmesh-security-plugin/eventmesh-security-auth-token/src/main/java/org/apache/eventmesh/auth/token/impl/auth/AuthTokenUtils.java
@@ -21,6 +21,7 @@ import org.apache.eventmesh.api.acl.AclProperties;
import org.apache.eventmesh.api.exception.AclException;
import org.apache.eventmesh.common.config.CommonConfiguration;
import org.apache.eventmesh.common.utils.ConfigurationContextUtil;
+import org.apache.eventmesh.common.utils.TypeUtils;
import org.apache.commons.lang3.StringUtils;
@@ -136,14 +137,15 @@ public class AuthTokenUtils {
String topic = aclProperties.getTopic();
- Set<String> groupTopics = (Set<String>)
aclProperties.getExtendedField("topics");
+ Object topics = aclProperties.getExtendedField("topics");
- if (groupTopics.contains(topic)) {
- return true;
- } else {
+ if (!(topics instanceof Set)) {
return false;
}
+ Set<String> groupTopics = TypeUtils.castSet(topics, String.class);
+
+ return groupTopics.contains(topic);
}
}
diff --git
a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/consumer/PushConsumerImpl.java
b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/consumer/PushConsumerImpl.java
index 8768a3542..d332a6c7b 100644
---
a/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/consumer/PushConsumerImpl.java
+++
b/eventmesh-storage-plugin/eventmesh-storage-rocketmq/src/main/java/org/apache/eventmesh/storage/rocketmq/consumer/PushConsumerImpl.java
@@ -145,6 +145,7 @@ public class PushConsumerImpl {
}
}
+ @SuppressWarnings("deprecation")
public void updateOffset(List<CloudEvent> cloudEvents, AbstractContext
context) {
ConsumeMessageService consumeMessageService = rocketmqPushConsumer
.getDefaultMQPushConsumerImpl().getConsumeMessageService();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]