Skip to content

Commit

Permalink
WFLY-9481 Default protocol properties are not applied to legacy proto…
Browse files Browse the repository at this point in the history
…col resources
  • Loading branch information
pferraro committed Oct 25, 2017
1 parent d96cbf5 commit c970904
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 14 deletions.
Expand Up @@ -23,9 +23,11 @@


import java.util.Map; import java.util.Map;


import org.jgroups.stack.Protocol;

/** /**
* @author Paul Ferraro * @author Paul Ferraro
*/ */
public interface ProtocolDefaults { public interface ProtocolDefaults {
Map<String, String> getProperties(String protocol); Map<String, String> getProperties(Class<? extends Protocol> protocolClass);
} }
Expand Up @@ -110,7 +110,7 @@ public final P createProtocol(ProtocolStackConfiguration stackConfiguration) {
// Only transform "native" protocols // Only transform "native" protocols
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
P result = (P) (nativeProtocol ? ProtocolFactory.TRANSFORMER.apply(protocol) : protocol); P result = (P) (nativeProtocol ? ProtocolFactory.TRANSFORMER.apply(protocol) : protocol);
Map<String, String> properties = new HashMap<>(this.defaults.getValue().getProperties(this.name)); Map<String, String> properties = new HashMap<>(this.defaults.getValue().getProperties(protocolClass));
properties.putAll(this.properties); properties.putAll(this.properties);
Configurator.removeDeprecatedProperties(result, properties); Configurator.removeDeprecatedProperties(result, properties);
Configurator.resolveAndAssignFields(result, properties); Configurator.resolveAndAssignFields(result, properties);
Expand Down
Expand Up @@ -27,11 +27,11 @@
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.IdentityHashMap;
import java.util.Map; import java.util.Map;


import org.jboss.as.clustering.jgroups.logging.JGroupsLogger;
import org.jboss.as.clustering.jgroups.ProtocolDefaults; import org.jboss.as.clustering.jgroups.ProtocolDefaults;
import org.jboss.as.clustering.jgroups.logging.JGroupsLogger;
import org.jboss.msc.service.ServiceBuilder; import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceController; import org.jboss.msc.service.ServiceController;
import org.jboss.msc.service.ServiceName; import org.jboss.msc.service.ServiceName;
Expand All @@ -40,6 +40,7 @@
import org.jboss.msc.value.Value; import org.jboss.msc.value.Value;
import org.jgroups.conf.ProtocolStackConfigurator; import org.jgroups.conf.ProtocolStackConfigurator;
import org.jgroups.conf.XmlConfigurator; import org.jgroups.conf.XmlConfigurator;
import org.jgroups.stack.Protocol;
import org.wildfly.clustering.service.AsynchronousServiceBuilder; import org.wildfly.clustering.service.AsynchronousServiceBuilder;
import org.wildfly.clustering.service.Builder; import org.wildfly.clustering.service.Builder;


Expand Down Expand Up @@ -75,7 +76,7 @@ private static URL find(String resource, ClassLoader... loaders) {
} }


private final String resource; private final String resource;
private final Map<String, Map<String, String>> map = new HashMap<>(); private final Map<Class<? extends Protocol>, Map<String, String>> map = new IdentityHashMap<>();


public ProtocolDefaultsBuilder() { public ProtocolDefaultsBuilder() {
this(DEFAULTS); this(DEFAULTS);
Expand All @@ -95,22 +96,24 @@ public ServiceBuilder<ProtocolDefaults> build(ServiceTarget target) {
return new AsynchronousServiceBuilder<>(this.getServiceName(), new ValueService<>(this)).build(target).setInitialMode(ServiceController.Mode.ON_DEMAND); return new AsynchronousServiceBuilder<>(this.getServiceName(), new ValueService<>(this)).build(target).setInitialMode(ServiceController.Mode.ON_DEMAND);
} }


/**
* {@inheritDoc}
* @see org.jboss.msc.value.Value#getValue()
*/
@Override @Override
public ProtocolDefaults getValue() { public ProtocolDefaults getValue() {
ProtocolStackConfigurator configurator = load(ProtocolDefaultsBuilder.this.resource); ProtocolStackConfigurator configurator = load(ProtocolDefaultsBuilder.this.resource);
for (org.jgroups.conf.ProtocolConfiguration config: configurator.getProtocolStack()) { try {
this.map.put(config.getProtocolName(), Collections.unmodifiableMap(config.getProperties())); for (org.jgroups.conf.ProtocolConfiguration config: configurator.getProtocolStack()) {
String protocolClassName = String.join(".", org.jgroups.conf.ProtocolConfiguration.protocol_prefix, config.getProtocolName());
Class<? extends Protocol> protocolClass = Protocol.class.getClassLoader().loadClass(protocolClassName).asSubclass(Protocol.class);
this.map.put(protocolClass, Collections.unmodifiableMap(config.getProperties()));
}
return this;
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException(e);
} }
return this;
} }


@Override @Override
public Map<String, String> getProperties(String protocol) { public Map<String, String> getProperties(Class<? extends Protocol> protocolClass) {
Map<String, String> properties = this.map.get(protocol); Map<String, String> properties = this.map.get(protocolClass);
return (properties != null) ? Collections.unmodifiableMap(properties) : Collections.<String, String>emptyMap(); return (properties != null) ? Collections.unmodifiableMap(properties) : Collections.<String, String>emptyMap();
} }
} }

0 comments on commit c970904

Please sign in to comment.