80c77071c6700660c39046da32a0d7953620f608Mark de Reeper/**
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper *
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * Copyright (c) 2010 ForgeRock AS. All Rights Reserved
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper *
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * The contents of this file are subject to the terms
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * of the Common Development and Distribution License
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * (the License). You may not use this file except in
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * compliance with the License.
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper *
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * You can obtain a copy of the License at
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * http://forgerock.org/license/CDDLv1.0.html
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * See the License for the specific language governing
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * permission and limitations under the License.
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper *
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * When distributing Covered Code, include this CDDL
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * Header Notice in each file and include the License file
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * at http://forgerock.org/license/CDDLv1.0.html
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * If applicable, add the following below the CDDL Header,
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * with the fields enclosed by brackets [] replaced by
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * your own identifying information:
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * "Portions Copyrighted [year] [name of copyright owner]"
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper */
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperpackage com.sun.identity.agents.install.appserver;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.install.tools.configurator.IStateAccess;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.install.tools.configurator.InstallConstants;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.install.tools.util.ConfigUtil;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.install.tools.util.Debug;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport java.io.File;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport java.util.Collection;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport org.apache.commons.io.FileUtils;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport org.forgerock.openam.agents.install.appserver.VersionChecker;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper/**
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper *
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper * @author Peter Major
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper */
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperpublic class AgentFilesBase implements InstallConstants, IConfigKeys {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected String asDomainDir = null;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected String agentLibPath;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected String agentLocalePath;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected String asLibDir;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected String asClassesDir;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected static final String[] localeExts = new String[]{"txt", "properties"};
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected static final String[] libJarFiles = new String[]{"agent.jar", "openssoclientsdk.jar"};
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected void getAgentConfigLocation(IStateAccess stateAccess) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper agentLibPath = ConfigUtil.getLibPath();
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper agentLocalePath = ConfigUtil.getLocaleDirPath();
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper File homeDir = new File((String) stateAccess.get(STR_KEY_AS_HOME_DIR));
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper asDomainDir = homeDir.getParent();
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper asLibDir = asDomainDir + "/lib";
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper asClassesDir = asLibDir + "/classes";
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected boolean removeAgentFiles(IStateAccess stateAccess) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper boolean status = false;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper getAgentConfigLocation(stateAccess);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper if (VersionChecker.isGlassFishv3(stateAccess)) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status = removeAgentJarFiles();
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status &= removeAgentLocaleFiles();
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper } else {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper //In case of GlassFish v2, we don't need to delete anything.
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status = true;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper return status;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected Collection<File> listAgentLocaleFiles() {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper return FileUtils.listFiles(new File(agentLocalePath), localeExts, false);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected boolean removeAgentJarFiles() {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper boolean status = false;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper for (int i = 0; i < libJarFiles.length; i++) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper Debug.log("AgentFilesBase.removeAgentJarFiles(): "
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper + " Removing file " + libJarFiles[i]);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper File file = new File(asLibDir + "/" + libJarFiles[i]);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status = file.delete();
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper return status;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper protected boolean removeAgentLocaleFiles() {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper boolean status = false;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper for (File localeFile : listAgentLocaleFiles()) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper Debug.log("AgentFilesBase.removeAgentLocaleFiles(): "
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper + " Removing file " + localeFile.getName());
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper File toDelete = new File(asClassesDir + "/" + localeFile.getName());
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status = toDelete.delete();
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper return status;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper}