This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/artemis.git
The following commit(s) were added to refs/heads/main by this push:
new 006d09c450 ARTEMIS-6067 eliminate reflection on Federation policy
006d09c450 is described below
commit 006d09c45090f4ca5a83fa63486bf714afb1a4b0
Author: Clebert Suconic <[email protected]>
AuthorDate: Mon May 18 17:56:10 2026 -0400
ARTEMIS-6067 eliminate reflection on Federation policy
---
.../core/config/federation/FederationPolicy.java | 17 +++++++++++++++++
.../impl/wireformat/FederationStreamConnectMessage.java | 16 ++++------------
.../federation/FederationDownstreamDirectTest.java | 2 +-
3 files changed, 22 insertions(+), 13 deletions(-)
diff --git
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/config/federation/FederationPolicy.java
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/config/federation/FederationPolicy.java
index d8d9d5eebb..869d93c4a9 100644
---
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/config/federation/FederationPolicy.java
+++
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/config/federation/FederationPolicy.java
@@ -20,6 +20,23 @@ import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
public interface FederationPolicy<T> {
+ static FederationPolicy<?> getFederationPolicy(String clazz) {
+ switch (clazz) {
+ case
"org.apache.activemq.artemis.core.config.federation.FederationAddressPolicyConfiguration":
+ return new FederationAddressPolicyConfiguration();
+
+ case
"org.apache.activemq.artemis.core.config.federation.FederationPolicySet":
+ return new FederationPolicySet();
+
+ case
"org.apache.activemq.artemis.core.config.federation.FederationQueuePolicyConfiguration":
+ return new FederationQueuePolicyConfiguration();
+
+ default:
+ throw new IllegalArgumentException("unknown " + clazz);
+ }
+ }
+
+
String getName();
T setName(String name);
diff --git
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/FederationStreamConnectMessage.java
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/FederationStreamConnectMessage.java
index e92968187a..226f9a09ba 100644
---
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/FederationStreamConnectMessage.java
+++
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/FederationStreamConnectMessage.java
@@ -26,13 +26,12 @@ import
org.apache.activemq.artemis.core.config.federation.FederationPolicy;
import
org.apache.activemq.artemis.core.config.federation.FederationStreamConfiguration;
import
org.apache.activemq.artemis.core.config.federation.FederationTransformerConfiguration;
import org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl;
-import org.apache.activemq.artemis.utils.ClassloadingUtil;
public abstract class FederationStreamConnectMessage<T extends
FederationStreamConfiguration> extends PacketImpl {
private String name;
private Credentials credentials;
- private Map<String, FederationPolicy> federationPolicyMap = new HashMap<>();
+ private Map<String, FederationPolicy<?>> federationPolicyMap = new
HashMap<>();
private Map<String, FederationTransformerConfiguration>
transformerConfigurationMap = new HashMap<>();
private T streamConfiguration;
@@ -65,12 +64,12 @@ public abstract class FederationStreamConnectMessage<T
extends FederationStreamC
this.streamConfiguration = streamConfiguration;
}
- public Map<String, FederationPolicy> getFederationPolicyMap() {
+ public Map<String, FederationPolicy<?>> getFederationPolicyMap() {
return federationPolicyMap;
}
public void setFederationPolicyMap(
- Map<String, FederationPolicy> federationPolicyMap) {
+ Map<String, FederationPolicy<?>> federationPolicyMap) {
this.federationPolicyMap = federationPolicyMap;
}
@@ -129,7 +128,7 @@ public abstract class FederationStreamConnectMessage<T
extends FederationStreamC
int policySize = buffer.readInt();
for (int i = 0; i < policySize; i++) {
String clazz = buffer.readString();
- FederationPolicy policy = getFederationPolicy(clazz);
+ FederationPolicy<?> policy =
FederationPolicy.getFederationPolicy(clazz);
policy.decode(buffer);
federationPolicyMap.put(policy.getName(), policy);
}
@@ -147,11 +146,4 @@ public abstract class FederationStreamConnectMessage<T
extends FederationStreamC
protected abstract T decodeStreamConfiguration(ActiveMQBuffer buffer);
- private FederationPolicy getFederationPolicy(String clazz) {
- try {
- return (FederationPolicy)
ClassloadingUtil.getInstanceWithTypeCheck(clazz, FederationPolicy.class,
this.getClass().getClassLoader());
- } catch (Exception e) {
- throw new IllegalStateException("Error. Unable to instantiate
FederationPolicy: " + e.getMessage(), e);
- }
- }
}
diff --git
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/federation/FederationDownstreamDirectTest.java
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/federation/FederationDownstreamDirectTest.java
index 32c1cb47a4..288c60e1c2 100644
---
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/federation/FederationDownstreamDirectTest.java
+++
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/federation/FederationDownstreamDirectTest.java
@@ -153,7 +153,7 @@ public class FederationDownstreamDirectTest extends
ActiveMQTestBase {
FederationDownstreamConnectMessage msg = new
FederationDownstreamConnectMessage();
msg.setName(name);
- Map<String, FederationPolicy> policyMap = new HashMap<>();
+ Map<String, FederationPolicy<?>> policyMap = new HashMap<>();
policyMap.put(policyConfigName, new
FederationQueuePolicyConfiguration().setName(policyConfigName).addInclude(new
FederationQueuePolicyConfiguration.Matcher().setQueueMatch("#").setAddressMatch("#")));
policyMap.put(policySetName, new
FederationPolicySet().setName(policySetName).addPolicyRef(policyConfigName));
msg.setFederationPolicyMap(policyMap);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]