Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.splout.db.hazelcast;
  
  /*
   * #%L
   * Splout SQL Server
   * %%
   * Copyright (C) 2012 Datasalt Systems S.L.
   * %%
   * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU Affero General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * #L%
  */
 
 
 
Hazelcast configuration can be built programmatically as a facade using the SploutSQL configuration or it can be loaded from hazelcast.xml in classpath or hazelcast.config env property. To do the latter, use HazelcastProperties.USE_DEFAULT_OR_XML_CONFIG
 
 public class HazelcastConfigBuilder {
 
 	private final static Log log = LogFactory.getLog(HazelcastConfigBuilder.class);
 
 	@SuppressWarnings("serial")
 	public static class HazelcastConfigBuilderException extends Exception {
 
 			super(message);
 		}
 	}
 
 	public static Config build(SploutConfiguration buConfthrows HazelcastConfigBuilderException {
 		// We can provide a Hazelcast XML
 			// http://www.hazelcast.com/docs/1.9.4/manual/multi_html/ch11.html
 			// We have to warn that some things will not be available (e.g. persistence)
 			.warn("Using hazelcast.config env variable or hazelcast.xml in classpath (http://www.hazelcast.com/docs/1.9.4/manual/multi_html/ch11.html). - Please note that persistence for some Coordination structures is not available unless manually provided by your .xml configuration.");
 			return null// Hazelcast will load the .xml
 		}
 
 		// Or we can configure it through our facade
 		Config hzConfig = new Config();
 		
 		if(strIFaces != null) {
 			.info("-- Using Hazelcast network interfaces: " + strIFaces);
 			Interfaces iFaces = new Interfaces();
 			for(String strIFace : strIFaces.split(",")) {
 				iFaces.addInterface(strIFace.trim());
 			}
 			hzConfig.getNetworkConfig().setInterfaces(iFaces);
 		}
 		
 		Integer prop = buConf.getInteger(., -1);
 		if(prop != -1) {
 			.info("-- Using Hazelcast port: " + prop);
 			hzConfig.getNetworkConfig().setPort(prop);
 		}
 
 		// Default Backup Count and merge policy
 		MapConfig cfg = new MapConfig();
 		cfg.setName("default");
 		cfg.setMergePolicy("hz.LATEST_UPDATE");
 		hzConfig.addMapConfig(cfg);
 
 		cfg = new MapConfig();
 
 		if(joinMethod == null) {
 			throw new HazelcastConfigBuilderException("No join method specified in configuration, must be one of: "
 			    + Arrays.toString(HazelcastProperties.JOIN_METHODS.values()));
 		}
 
 		try {
 			method = HazelcastProperties.JOIN_METHODS.valueOf(joinMethod);
 		} catch(IllegalArgumentException e) {
			throw new HazelcastConfigBuilderException("Invalid join method: " + joinMethod + " must be one of: "
			    + Arrays.toString(HazelcastProperties.JOIN_METHODS.values()));
		}
		NetworkConfig network = hzConfig.getNetworkConfig();
		Join join = network.getJoin();
		// Disable all by default. Then we enable the correct one.
		join.getAwsConfig().setEnabled(false);
		// http://www.hazelcast.com/docs/1.9.4/manual/multi_html/ch11s02.html
		/*
		 * AWS autodiscovery
		 */
			.info("Configuring Splout for AWS auto-discovery Hazelcast join (http://www.hazelcast.com/docs/1.9.4/manual/multi_html/ch11s02.html).");
			if(key == null) {
				throw new HazelcastConfigBuilderException("Missing AWS Key property (" + . + ")");
			}
			if(secretKey == null) {
				throw new HazelcastConfigBuilderException("Missing AWS Secret Key property (" + .
				    + ")");
			}
			join.getAwsConfig().setSecretKey(secretKey);
			// Optionally add the security group
			if(securityGroup != null) {
				.info("-- Using security group: " + securityGroup);
				join.getAwsConfig().setSecurityGroupName(securityGroup);
			}
			/*
			 * TCP
			 */
			.info("Configuring SploutSQL for TCP/IP Hazelcast join.");
			if(tcpCluster == null) {
				throw new HazelcastConfigBuilderException("Enabled TCP join method but missing TCP Cluster key property ("
				    + . + ")");
			}
			String[] cluster = tcpCluster.split(",");
			for(String host : cluster) {
				try {
catch(Throwable e) {
		    	.error("Invalid host in TCP cluster"e);
					throw new HazelcastConfigBuilderException("Invalid host in TCP cluster: " + host);
				}
			}
			/*
			 * MULTICAST
			 */
else {
			.info("Configuring SploutSQL for MULTICAST Hazelcast join.");
			if(group != null) {
				.info("-- Using multicast group: " + group);
			}
			if(port != -1) {
				.info("-- Using multicast port: " + port);
			}
		}
		/*
		 * Miscelaneous
		 */
			.info("Disabling Hazelcast join wait time.");
			hzConfig.setProperty("hazelcast.wait.seconds.before.join""0");
		}
		return hzConfig;
	}
New to GrepCode? Check out our FAQ X