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.v81;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.agents.install.appserver.AgentFilesBase;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.install.tools.configurator.IStateAccess;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.install.tools.configurator.ITask;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.install.tools.configurator.InstallException;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.install.tools.util.Debug;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.install.tools.util.FileUtils;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport com.sun.identity.install.tools.util.LocalizedMessage;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport java.io.File;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeperimport java.util.Map;
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 CopyAgentFilesTask extends AgentFilesBase implements ITask {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper public static final String LOC_TSK_MSG_COPY_AGENT_FILES_EXECUTE =
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper "TSK_MSG_COPY_AGENT_FILES_EXECUTE";
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper public static final String LOC_TSK_MSG_COPY_AGENT_FILES_ROLLBACK =
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper "TSK_MSG_COPY_AGENT_FILES_ROLLBACK";
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper public boolean execute(String name, IStateAccess stateAccess, Map properties)
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper throws InstallException {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper boolean status = true;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper try {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper getAgentConfigLocation(stateAccess);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper if (VersionChecker.isGlassFishv3(stateAccess)) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status &= copyAgentJarFiles();
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status &= copyAgentLocaleFiles();
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper } catch (Exception ex) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status = false;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper Debug.log("CopyAgentFilesTask.execute() - encountered exception"
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper + ex.getMessage(), ex);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper return status;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper private boolean copyAgentJarFiles() {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper boolean status = true;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper try {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper for (int i = 0; i < libJarFiles.length; i++) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper FileUtils.copyJarFile(agentLibPath, asLibDir, libJarFiles[i]);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper Debug.log("CopyAgentFilesTask.copyAgentJarFiles() - copy "
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper + libJarFiles[i] + " from " + agentLibPath + " to " + asLibDir);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper } catch (Exception ex) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper Debug.log("CopyAgentFilesTask.copyAgentJarFiles() - "
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper + "Error occured while copying jar files from " + agentLibPath
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper + " to " + asLibDir + ": " + ex.getMessage(), ex);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status = false;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper return status;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper private boolean copyAgentLocaleFiles() {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper boolean status = true;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper try {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper for (File localeFile : listAgentLocaleFiles()) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper FileUtils.copyFile(agentLocalePath + System.getProperty("file.separator") + localeFile.getName(),
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper asClassesDir + System.getProperty("file.separator") + localeFile.getName());
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper Debug.log("CopyAgentFilesTask.copyAgentLocaleFiles() - copy "
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper + localeFile.getName() + " from " + agentLocalePath + " to " + asClassesDir);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper } catch (Exception ex) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper Debug.log("CopyAgentFilesTask.copyAgentLocaleFiles() - "
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper + "Error occured while copying locale files from " + agentLocalePath
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper + " to " + asClassesDir + ": " + ex.getMessage(), ex);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status = false;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper return status;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper public LocalizedMessage getExecutionMessage(IStateAccess stateAccess,
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper Map properties) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper LocalizedMessage message = LocalizedMessage.get(
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper LOC_TSK_MSG_COPY_AGENT_FILES_EXECUTE,
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper IConstants.STR_AS_GROUP, null);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper return message;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper public LocalizedMessage getRollBackMessage(IStateAccess stateAccess,
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper Map properties) {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper LocalizedMessage message = LocalizedMessage.get(
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper LOC_TSK_MSG_COPY_AGENT_FILES_ROLLBACK,
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper IConstants.STR_AS_GROUP, null);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper return message;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper public boolean rollBack(String name, IStateAccess stateAccess,
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper Map properties) throws InstallException {
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper boolean status = false;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper status = removeAgentFiles(stateAccess);
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper return status;
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper }
80c77071c6700660c39046da32a0d7953620f608Mark de Reeper}