Skip to content

Commit

Permalink
Slightly changed the factory apis to pass in a HazelcastInstance whic…
Browse files Browse the repository at this point in the history
…h can be used for service registration and added a basic abstract DiscoveryStrategy implementation providing convenience access to properties

Injecting the ILogger directly and use Member as service registration only

Highering code coverage + small changes to the SPI
  • Loading branch information
noctarius committed Oct 20, 2015
1 parent 453bed9 commit 9733142
Show file tree
Hide file tree
Showing 40 changed files with 1,260 additions and 361 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package com.hazelcast.client.config;

import com.hazelcast.config.DiscoveryStrategiesConfig;
import com.hazelcast.config.DiscoveryConfig;
import com.hazelcast.config.SSLConfig;
import com.hazelcast.config.SocketInterceptorConfig;

Expand All @@ -41,27 +41,27 @@ public class ClientNetworkConfig {
private SocketOptions socketOptions = new SocketOptions();
private SSLConfig sslConfig;
private ClientAwsConfig clientAwsConfig;
private DiscoveryStrategiesConfig discoveryStrategiesConfig;
private DiscoveryConfig discoveryConfig;

/**
* Returns the configuration of the Hazelcast Discovery SPI and configured discovery providers
*
* @return Discovery Provider SPI configuration
*/
public DiscoveryStrategiesConfig getDiscoveryStrategiesConfig() {
if (discoveryStrategiesConfig == null) {
discoveryStrategiesConfig = new DiscoveryStrategiesConfig();
public DiscoveryConfig getDiscoveryConfig() {
if (discoveryConfig == null) {
discoveryConfig = new DiscoveryConfig();
}
return discoveryStrategiesConfig;
return discoveryConfig;
}

/**
* Defines the Discovery Provider SPI configuration
*
* @param discoveryStrategiesConfig the Discovery Provider SPI configuration
* @param discoveryConfig the Discovery Provider SPI configuration
*/
public void setDiscoveryStrategiesConfig(DiscoveryStrategiesConfig discoveryStrategiesConfig) {
this.discoveryStrategiesConfig = discoveryStrategiesConfig;
public void setDiscoveryConfig(DiscoveryConfig discoveryConfig) {
this.discoveryConfig = discoveryConfig;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import com.hazelcast.config.AbstractConfigBuilder;
import com.hazelcast.config.ConfigLoader;
import com.hazelcast.config.DiscoveryStrategyConfig;
import com.hazelcast.config.DiscoveryStrategiesConfig;
import com.hazelcast.config.DiscoveryConfig;
import com.hazelcast.config.EvictionConfig;
import com.hazelcast.config.EvictionPolicy;
import com.hazelcast.config.InMemoryFormat;
Expand Down Expand Up @@ -337,27 +337,27 @@ private void handleNetwork(Node node) {
}

private void handleDiscoveryStrategies(Node node, ClientNetworkConfig clientNetworkConfig) {
final DiscoveryStrategiesConfig discoveryStrategiesConfig = clientNetworkConfig.getDiscoveryStrategiesConfig();
final DiscoveryConfig discoveryConfig = clientNetworkConfig.getDiscoveryConfig();
for (Node child : new IterableNodeList(node.getChildNodes())) {
final String name = cleanNodeName(child.getNodeName());
if ("discovery-strategy".equals(name)) {
handleDiscoveryStrategy(child, discoveryStrategiesConfig);
handleDiscoveryStrategy(child, discoveryConfig);
} else if ("node-filter".equals(name)) {
handleDiscoveryNodeFilter(child, discoveryStrategiesConfig);
handleDiscoveryNodeFilter(child, discoveryConfig);
}
}
}

private void handleDiscoveryNodeFilter(Node node, DiscoveryStrategiesConfig discoveryStrategiesConfig) {
private void handleDiscoveryNodeFilter(Node node, DiscoveryConfig discoveryConfig) {
final NamedNodeMap atts = node.getAttributes();

final Node att = atts.getNamedItem("class");
if (att != null) {
discoveryStrategiesConfig.setNodeFilterClass(getTextContent(att).trim());
discoveryConfig.setNodeFilterClass(getTextContent(att).trim());
}
}

private void handleDiscoveryStrategy(Node node, DiscoveryStrategiesConfig discoveryStrategiesConfig) {
private void handleDiscoveryStrategy(Node node, DiscoveryConfig discoveryConfig) {
final NamedNodeMap atts = node.getAttributes();

boolean enabled = false;
Expand Down Expand Up @@ -385,7 +385,7 @@ private void handleDiscoveryStrategy(Node node, DiscoveryStrategiesConfig discov
}
}

discoveryStrategiesConfig.addDiscoveryProviderConfig(new DiscoveryStrategyConfig(clazz, properties));
discoveryConfig.addDiscoveryProviderConfig(new DiscoveryStrategyConfig(clazz, properties));
}

private void handleAWS(Node node, ClientNetworkConfig clientNetworkConfig) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
import com.hazelcast.concurrent.lock.LockServiceImpl;
import com.hazelcast.concurrent.semaphore.SemaphoreService;
import com.hazelcast.config.Config;
import com.hazelcast.config.DiscoveryStrategiesConfig;
import com.hazelcast.config.DiscoveryConfig;
import com.hazelcast.config.GroupConfig;
import com.hazelcast.core.Client;
import com.hazelcast.core.ClientService;
Expand Down Expand Up @@ -86,10 +86,11 @@
import com.hazelcast.ringbuffer.impl.RingbufferService;
import com.hazelcast.security.Credentials;
import com.hazelcast.security.UsernamePasswordCredentials;
import com.hazelcast.spi.discovery.DiscoveryMode;
import com.hazelcast.spi.discovery.impl.DefaultDiscoveryServiceProvider;
import com.hazelcast.spi.discovery.integration.DiscoveryMode;
import com.hazelcast.spi.discovery.integration.DiscoveryService;
import com.hazelcast.spi.discovery.integration.DiscoveryServiceProvider;
import com.hazelcast.spi.discovery.integration.DiscoveryServiceSettings;
import com.hazelcast.spi.impl.SerializationServiceSupport;
import com.hazelcast.topic.impl.TopicService;
import com.hazelcast.topic.impl.reliable.ReliableTopicService;
Expand Down Expand Up @@ -203,15 +204,20 @@ private Collection<AddressProvider> createAddressProviders(AddressProvider exter

private DiscoveryService initDiscoveryService(ClientConfig config) {
ClientNetworkConfig networkConfig = config.getNetworkConfig();
DiscoveryStrategiesConfig discoveryStrategiesConfig = networkConfig.getDiscoveryStrategiesConfig().getAsReadOnly();
if (discoveryStrategiesConfig == null || !discoveryStrategiesConfig.isEnabled()) {
DiscoveryConfig discoveryConfig = networkConfig.getDiscoveryConfig().getAsReadOnly();
if (discoveryConfig == null || !discoveryConfig.isEnabled()) {
return null;
}
DiscoveryServiceProvider factory = discoveryStrategiesConfig.getDiscoveryServiceProvider();
DiscoveryServiceProvider factory = discoveryConfig.getDiscoveryServiceProvider();
if (factory == null) {
factory = new DefaultDiscoveryServiceProvider();
}
return factory.newDiscoveryService(DiscoveryMode.Client, discoveryStrategiesConfig, config.getClassLoader());
ILogger logger = Logger.getLogger(DiscoveryService.class);

DiscoveryServiceSettings settings = new DiscoveryServiceSettings().setConfigClassLoader(config.getClassLoader())
.setLogger(logger).setDiscoveryMode(DiscoveryMode.Client).setDiscoveryConfig(discoveryConfig);

return factory.newDiscoveryService(settings);
}

private LoadBalancer initLoadBalancer(ClientConfig config) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import com.hazelcast.logging.ILogger;
import com.hazelcast.logging.Logger;
import com.hazelcast.nio.Address;
import com.hazelcast.spi.discovery.DiscoveredNode;
import com.hazelcast.spi.discovery.DiscoveryNode;
import com.hazelcast.spi.discovery.integration.DiscoveryService;

import java.net.InetSocketAddress;
Expand All @@ -41,11 +41,11 @@ public DiscoveryAddressProvider(DiscoveryService discoveryService) {

@Override
public Collection<InetSocketAddress> loadAddresses() {
Iterable<DiscoveredNode> discoveredNodes = discoveryService.discoverNodes();
Iterable<DiscoveryNode> discoveredNodes = discoveryService.discoverNodes();

Collection<InetSocketAddress> possibleMembers = new ArrayList<InetSocketAddress>();
for (DiscoveredNode discoveredNode : discoveredNodes) {
Address discoveredAddress = discoveredNode.getPrivateAddress();
for (DiscoveryNode discoveryNode : discoveredNodes) {
Address discoveredAddress = discoveryNode.getPrivateAddress();
try {
possibleMembers.add(discoveredAddress.getInetSocketAddress());
} catch (UnknownHostException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import com.hazelcast.client.connection.AddressTranslator;
import com.hazelcast.nio.Address;
import com.hazelcast.spi.discovery.DiscoveredNode;
import com.hazelcast.spi.discovery.DiscoveryNode;
import com.hazelcast.spi.discovery.integration.DiscoveryService;

import java.util.HashMap;
Expand Down Expand Up @@ -64,11 +64,11 @@ public Address translate(Address address) {

@Override
public void refresh() {
Iterable<DiscoveredNode> discoveredNodes = discoveryService.discoverNodes();
Iterable<DiscoveryNode> discoveredNodes = discoveryService.discoverNodes();

Map<Address, Address> privateToPublic = new HashMap<Address, Address>();
for (DiscoveredNode discoveredNode : discoveredNodes) {
privateToPublic.put(discoveredNode.getPrivateAddress(), discoveredNode.getPublicAddress());
for (DiscoveryNode discoveryNode : discoveredNodes) {
privateToPublic.put(discoveryNode.getPrivateAddress(), discoveryNode.getPublicAddress());
}
this.privateToPublic = privateToPublic;
}
Expand Down
Loading

0 comments on commit 9733142

Please sign in to comment.