package org.wildfly.extension.messaging.activemq.jms; import java.util.SortedSet; import java.util.TreeSet; import org.apache.activemq.artemis.ra.ActiveMQResourceAdapter; import org.wildfly.extension.messaging.activemq.jms.ConnectionFactoryAttributes.Pooled; import org.junit.Test; public class PooledConnectionFactoryAttributesTestCase extends AttributesTestBase{ private static final SortedSet<String> UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES; private static final SortedSet<String> KNOWN_ATTRIBUTES; static { UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES = new TreeSet<String>(); // we configure discovery group using discoveryGroupName instead of individual params: UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add(PooledConnectionFactoryService.GROUP_ADDRESS); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add(PooledConnectionFactoryService.GROUP_PORT); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add(PooledConnectionFactoryService.REFRESH_TIMEOUT); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add(PooledConnectionFactoryService.DISCOVERY_LOCAL_BIND_ADDRESS); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add(PooledConnectionFactoryService.DISCOVERY_INITIAL_WAIT_TIMEOUT); // these properties must not be exposed by the AS7 messaging subsystem UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add(PooledConnectionFactoryService.CONNECTION_PARAMETERS); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add(PooledConnectionFactoryService.CONNECTOR_CLASSNAME); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add("managedConnectionFactory"); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add(PooledConnectionFactoryService.JGROUPS_CHANNEL_LOCATOR_CLASS); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add(PooledConnectionFactoryService.JGROUPS_CHANNEL_REF_NAME); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add(PooledConnectionFactoryService.JGROUPS_CHANNEL_NAME); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add("jgroupsFile"); // these 2 props will *not* be supported since AS7 relies on vaulted passwords + expressions instead UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add("passwordCodec"); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add("useMaskedPassword"); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add("connectionPoolName"); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add("deserializationBlackList"); UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES.add("deserializationWhiteList"); KNOWN_ATTRIBUTES = new TreeSet<String>(); // these are supported but it is not found by JavaBeans introspector because of the type // difference b/w the getter and the setters (Long vs long) KNOWN_ATTRIBUTES.add(Pooled.SETUP_ATTEMPTS_PROP_NAME); KNOWN_ATTRIBUTES.add(Pooled.SETUP_INTERVAL_PROP_NAME); KNOWN_ATTRIBUTES.add(Pooled.USE_JNDI_PROP_NAME); KNOWN_ATTRIBUTES.add(Pooled.REBALANCE_CONNECTIONS_PROP_NAME); } @Test public void compareWildFlyPooledConnectionFactoryAndActiveMQConnectionFactoryProperties() throws Exception { SortedSet<String> pooledConnectionFactoryAttributes = findAllResourceAdapterProperties(PooledConnectionFactoryDefinition.ATTRIBUTES); pooledConnectionFactoryAttributes.removeAll(KNOWN_ATTRIBUTES); SortedSet<String> activemqRAProperties = findAllPropertyNames(ActiveMQResourceAdapter.class); activemqRAProperties.removeAll(UNSUPPORTED_ACTIVEMQ_RA_PROPERTIES); compare("AS7 PooledConnectionFactoryAttributes", pooledConnectionFactoryAttributes, "ActiveMQ Resource Adapter", activemqRAProperties); } private static SortedSet<String> findAllResourceAdapterProperties(ConnectionFactoryAttribute... attrs) { SortedSet<String> names = new TreeSet<String>(); for (ConnectionFactoryAttribute attr : attrs) { if (attr.isResourceAdapterProperty()) { names.add(attr.getPropertyName()); } } return names; } }