0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle/**
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle*
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* Copyright (c) 2013-2015 ForgeRock AS. All Rights Reserved
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle*
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* The contents of this file are subject to the terms
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* of the Common Development and Distribution License
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* (the License). You may not use this file except in
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* compliance with the License.
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle*
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* You can obtain a copy of the License at
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* http://forgerock.org/license/CDDLv1.0.html
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* See the License for the specific language governing
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* permission and limitations under the License.
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle*
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* When distributing Covered Code, include this CDDL
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* Header Notice in each file and include the License file
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* at http://forgerock.org/license/CDDLv1.0.html
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* If applicable, add the following below the CDDL Header,
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* with the fields enclosed by brackets [] replaced by
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* your own identifying information:
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle* "Portions Copyrighted [year] [name of copyright owner]"
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle*
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienle*/
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienlepackage org.forgerock.openidm.cluster;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienleimport java.util.Properties;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
0365e5e502b10b8712ae1fc77b744025f6ac1900chad.kienleimport org.forgerock.json.JsonValue;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienleimport org.slf4j.Logger;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienleimport org.slf4j.LoggerFactory;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienlepublic class ClusterConfig {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle final static Logger logger = LoggerFactory.getLogger(ClusterConfig.class);
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle // Scheduler objects
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private final static String INSTANCE_ID = "instanceId";
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private final static String INSTANCE_TIMEOUT = "instanceTimeout";
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private final static String INSTANCE_RECOVERY_TIMEOUT = "instanceRecoveryTimeout";
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private final static String INSTANCE_CHECK_IN_INTERVAL = "instanceCheckInInterval";
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private final static String INSTANCE_CHECK_IN_OFFSET = "instanceCheckInOffset";
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private final static String ENABLED = "enabled";
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private String instanceId = "instance0";
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private long instanceTimeout = 30000;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private long instanceRecoveryTimeout = 30000;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private long instanceCheckInInterval = 5000;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private long instanceCheckInOffset = 0;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle private boolean enabled = true;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public ClusterConfig(JsonValue config) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle if (!config.isNull()) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle JsonValue value = config.get(INSTANCE_ID);
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle if (!value.isNull()) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle instanceId = value.asString();
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle value = config.get(INSTANCE_TIMEOUT);
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle if (!value.isNull()) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle setInstanceTimeout(Long.parseLong(value.asString()));
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle value = config.get(INSTANCE_RECOVERY_TIMEOUT);
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle if (!value.isNull()) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle setInstanceRecoveryTimeout(Long.parseLong(value.asString()));
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle value = config.get(INSTANCE_CHECK_IN_INTERVAL);
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle if (!value.isNull()) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle setInstanceCheckInInterval(Long.parseLong(value.asString()));
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle value = config.get(INSTANCE_CHECK_IN_OFFSET);
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle if (!value.isNull()) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle setInstanceCheckInOffset(Long.parseLong(value.asString()));
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle value = config.get(ENABLED);
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle if (!value.isNull() && value.isBoolean()) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle setEnabled(value.asBoolean());
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle } else if (!value.isNull() && value.isString()) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle setEnabled(Boolean.parseBoolean(value.asString()));
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public String getInstanceId() {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle return instanceId;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public void setInstanceId(String instanceId) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle this.instanceId = instanceId;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public Properties toProps() {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle Properties props = new Properties();
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle props.put(INSTANCE_TIMEOUT, getInstanceTimeout());
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle props.put(INSTANCE_RECOVERY_TIMEOUT, getInstanceRecoveryTimeout());
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle props.put(INSTANCE_CHECK_IN_INTERVAL, getInstanceCheckInInterval());
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle props.put(INSTANCE_CHECK_IN_OFFSET, getInstanceCheckInOffset());
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle props.put(INSTANCE_ID, getInstanceId());
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle return props;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public long getInstanceTimeout() {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle return instanceTimeout;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public void setInstanceTimeout(long instanceTimeout) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle this.instanceTimeout = instanceTimeout;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public long getInstanceRecoveryTimeout() {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle return instanceRecoveryTimeout;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public void setInstanceRecoveryTimeout(long instanceRecoveryTimeout) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle this.instanceRecoveryTimeout = instanceRecoveryTimeout;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public long getInstanceCheckInInterval() {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle return instanceCheckInInterval;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public void setInstanceCheckInInterval(long instanceCheckInInterval) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle this.instanceCheckInInterval = instanceCheckInInterval;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public long getInstanceCheckInOffset() {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle return instanceCheckInOffset;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public void setInstanceCheckInOffset(long instanceCheckInOffset) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle this.instanceCheckInOffset = instanceCheckInOffset;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public boolean isEnabled() {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle return enabled;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle public void setEnabled(boolean enabled) {
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle this.enabled = enabled;
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle }
d1ca2a638584eac08f1e7197086f6c903d6d553eChad Kienle}