All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.terracotta.angela.common.tcconfig.TcConfig Maven / Gradle / Ivy

/*
 * Copyright Terracotta, Inc.
 *
 * 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 org.terracotta.angela.common.tcconfig;

import org.terracotta.angela.common.net.PortAllocator;
import org.terracotta.angela.common.tcconfig.holders.TcConfig10Holder;
import org.terracotta.angela.common.tcconfig.holders.TcConfig8Holder;
import org.terracotta.angela.common.tcconfig.holders.TcConfig9Holder;
import org.terracotta.angela.common.tcconfig.holders.TcConfigHolder;
import org.terracotta.angela.common.topology.Version;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.net.URL;
import java.util.List;
import java.util.Map;

/**
 * base tc config holder
 * 
* * @author Tim Eck */ public class TcConfig implements Serializable { private static final long serialVersionUID = 1L; protected final TcConfigHolder tcConfigHolder; protected String tcConfigName; public static TcConfig tcConfig(Version version, URL tcConfigPath) { return new TcConfig(version, tcConfigPath); } TcConfig(TcConfig tcConfig) { this.tcConfigName = tcConfig.tcConfigName; if (tcConfig.tcConfigHolder instanceof TcConfig8Holder) { this.tcConfigHolder = new TcConfig8Holder((TcConfig8Holder) tcConfig.tcConfigHolder); } else if (tcConfig.tcConfigHolder instanceof TcConfig9Holder) { this.tcConfigHolder = new TcConfig9Holder((TcConfig9Holder) tcConfig.tcConfigHolder); } else if (tcConfig.tcConfigHolder instanceof TcConfig10Holder) { this.tcConfigHolder = new TcConfig10Holder((TcConfig10Holder) tcConfig.tcConfigHolder); } else { throw new RuntimeException("Unexpected"); } } TcConfig(Version version, URL tcConfigPath) { this.tcConfigName = new File(tcConfigPath.getPath()).getName(); this.tcConfigHolder = initTcConfigHolder(version, tcConfigPath); } public TcConfig copy() { return new TcConfig(this); } protected TcConfigHolder initTcConfigHolder(Version version, URL tcConfigPath) { try { try (InputStream is = tcConfigPath.openStream()) { if (version.getMajor() == 4) { if (version.getMinor() == 0) { return new TcConfig8Holder(is); } else { return new TcConfig9Holder(is); } } else { return new TcConfig10Holder(is); } } } catch (IOException e) { throw new RuntimeException("Cannot read tc-config file : " + tcConfigPath, e); } } public void initialize(PortAllocator portAllocator) { tcConfigHolder.initialize(portAllocator, tag -> !tag.equals("jmx-port") && !tag.equals("management-port")); } public List getServers() { return tcConfigHolder.getServers(); } public String getTcConfigName() { return tcConfigName; } public void setTcConfigName(String tcConfigName) { this.tcConfigName = tcConfigName; } public void createOrUpdateTcProperty(String name, String value) { tcConfigHolder.createOrUpdateTcProperty(name, value); } public String toXml() { return tcConfigHolder.getTcConfigContent(); } public void writeTcConfigFile(File kitDir) { this.tcConfigHolder.writeTcConfigFile(kitDir, tcConfigName); } public void writeTcConfigFile(File kitDir, String name) { this.tcConfigHolder.writeTcConfigFile(kitDir, name); } public String getPath() { return this.tcConfigHolder.getTcConfigPath(); } public List getLogsLocation() { return this.tcConfigHolder.getLogsLocation(); } public void updateLogsLocation(File kitDir, int stripeId) { tcConfigHolder.updateLogsLocation(kitDir, stripeId); } public void updateSecurityRootDirectoryLocation(String securityRootDirectory) { tcConfigHolder.updateSecurityRootDirectoryLocation(securityRootDirectory); } public void updateAuditDirectoryLocation(File kitDir, int stripeId) { tcConfigHolder.updateAuditDirectoryLocation(kitDir, stripeId); } public void updateDataDirectory(String rootId, String newlocation) { tcConfigHolder.updateDataDirectory(rootId, newlocation); } public Map getDataDirectories() { return tcConfigHolder.getDataDirectories(); } public List getPluginServices() { return tcConfigHolder.getPluginServices(); } public void updateServerHost(int serverIndex, String newServerName) { tcConfigHolder.updateServerHost(serverIndex, newServerName); } public void updateServerName(int serverIndex, String newServerName) { tcConfigHolder.updateServerName(serverIndex, newServerName); } public void updateServerPort(int serverIndex, String portName, int port) { tcConfigHolder.updateServerPort(serverIndex, portName, port); } public void addServer(int stripeIndex, String hostname) { tcConfigHolder.addServer(stripeIndex, hostname); } public List retrieveGroupMembers(String serverName, boolean updateProxy, PortAllocator portAllocator) { return tcConfigHolder.retrieveGroupMembers(serverName, updateProxy, portAllocator); } public void updateServerGroupPort(Map proxiedPorts) { tcConfigHolder.updateServerGroupPort(proxiedPorts); } public void updateServerTsaPort(Map proxiedPorts) { tcConfigHolder.updateServerTsaPort(proxiedPorts); } public Map retrieveTsaPorts(boolean updateForProxy, PortAllocator portAllocator) { return tcConfigHolder.retrieveTsaPorts(updateForProxy, portAllocator); } public void substituteToken(String token, String value) { tcConfigHolder.substituteToken(token, value); } public void addOffheap(String resourceName, String size, String unit) { tcConfigHolder.addOffheap(resourceName, size, unit); } public void addDataDirectoryList(List tsaDataDirectoryList) { tcConfigHolder.addDataDirectory(tsaDataDirectoryList); } public void addPersistencePlugin(String persistenceDataName) { tcConfigHolder.addPersistencePlugin(persistenceDataName); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy