/*
* Copyright (c) 2008-2016, Hazelcast, Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hazelcast.examples.helper;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import static com.hazelcast.examples.helper.CommonUtils.closeQuietly;
/**
* Utils class to get the Hazelcast Enterprise license key for code samples.
*
* You can provide the license key via
* <ul>
* <li>the constant {@link LicenseUtils#ENTERPRISE_LICENSE_KEY}</li>
* <li>the file {@code .hazelcast-code-samples-license} in your home directory</li>
* <li>the system property {@code -Dhazelcast.enterprise.license.key=<YOUR_LICENSE_KEY_HERE>}</li>
* </ul>
*
* You can request a trial key at http://hazelcast.com/hazelcast-enterprise-trial
*/
public final class LicenseUtils {
public static final String ENTERPRISE_LICENSE_KEY = initLicenseKey();
private static final int READ_BUFFER_SIZE = 8192;
private LicenseUtils() {
}
private static String initLicenseKey() {
String licenseKey = System.getProperty("hazelcast.enterprise.license.key");
if (licenseKey != null) {
System.out.println("Hazelcast Enterprise license key was set via system properties");
return licenseKey.trim();
}
File licenseFile = new File(System.getProperty("user.home"), ".hazelcast-code-samples-license").getAbsoluteFile();
licenseKey = fileAsText(licenseFile);
if (licenseKey != null) {
System.out.println("Hazelcast Enterprise license key was set via license file");
return licenseKey.trim();
}
throw new RuntimeException("Hazelcast Enterprise license key was not configured!"
+ " Please have a look at LicenseUtils for details.");
}
private static String fileAsText(File file) {
FileInputStream stream = null;
InputStreamReader streamReader = null;
BufferedReader reader = null;
try {
stream = new FileInputStream(file);
streamReader = new InputStreamReader(stream);
reader = new BufferedReader(streamReader);
StringBuilder builder = new StringBuilder();
char[] buffer = new char[READ_BUFFER_SIZE];
int read;
while ((read = reader.read(buffer, 0, buffer.length)) > 0) {
builder.append(buffer, 0, read);
}
return builder.toString();
} catch (IOException e) {
return null;
} finally {
closeQuietly(reader);
closeQuietly(streamReader);
closeQuietly(stream);
}
}
}