de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper/**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Copyright (c) 2008 Sun Microsystems Inc. All Rights Reserved
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * The contents of this file are subject to the terms
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * of the Common Development and Distribution License
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * (the License). You may not use this file except in
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * compliance with the License.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * You can obtain a copy of the License at
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * https://opensso.dev.java.net/public/CDDLv1.0.html or
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * opensso/legal/CDDLv1.0.txt
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * See the License for the specific language governing
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * permission and limitations under the License.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * When distributing Covered Code, include this CDDL
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Header Notice in each file and include the License file
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * at opensso/legal/CDDLv1.0.txt.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * If applicable, add the following below the CDDL Header,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * with the fields enclosed by brackets [] replaced by
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * your own identifying information:
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * "Portions Copyrighted [year] [name of copyright owner]"
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * $Id: ConfigureServerXMLTask.java,v 1.1 2008/11/21 22:21:55 leiming Exp $
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperpackage com.sun.identity.agents.tools.websphere.v61;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport java.io.File;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport java.util.Map;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.configurator.IStateAccess;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.configurator.ITask;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.configurator.InstallException;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.Debug;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.LocalizedMessage;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.xml.XMLDocument;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.xml.XMLElement;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.agents.tools.websphere.ServerXMLBase;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper/**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Configure server.xml file for WAS.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperpublic class ConfigureServerXMLTask extends ServerXMLBase
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper implements ITask {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public boolean execute(String name, IStateAccess stateAccess,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Map properties) throws InstallException {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper boolean status = true;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper try {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String serverXmlFile = (String)stateAccess.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_KEY_SERVER_INSTANCE_DIR) + STR_FILE_SEP +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_SERVER_XML_FILE;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String serverInstName = (String)stateAccess.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_SERVER_INSTANCE_NAME);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((serverXmlFile != null) && (serverXmlFile.length() > 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLDocument serverXMLDoc = new XMLDocument(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper new File(serverXmlFile));
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper serverXMLDoc.setIndentDepth(2);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement jvmEntries = findClassPathElement(serverXMLDoc,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper serverInstName,STR_PROC_DEF);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (jvmEntries != null) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ConfigureServerXMLTask.execute - jvmEntries = " +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmEntries.toXMLString());
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // add IBM encryption JVM options
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = configureJVMOptions(serverXMLDoc, jvmEntries,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper stateAccess);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // We have three cases to handle.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // 1. classpath as attr
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // 2. classpath as element
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // 3. classpath not present
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (status) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = configureClasspath(serverXMLDoc,jvmEntries,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper stateAccess);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if(status) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper serverXMLDoc.store();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "ConfigureServerXMLTask.execute - failed to find " +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "jvmEntries element");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "ConfigureServerXMLTask.execute - Invalid server.xml file "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "specified = " + serverXmlFile);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (Exception ex) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ConfigureServerXMLTask.execute - Exception thrown "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "while configuring server.xml file : ",ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return status;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public boolean rollBack(String name, IStateAccess stateAccess,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Map properties) throws InstallException {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper boolean status = true;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper try {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String serverXmlFile = (String)stateAccess.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_KEY_SERVER_INSTANCE_DIR) +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_FILE_SEP + STR_SERVER_XML_FILE;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String serverInstName = (String)stateAccess.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_SERVER_INSTANCE_NAME);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((serverXmlFile != null) && (serverXmlFile.length() > 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLDocument serverXMLDoc = new XMLDocument(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper new File(serverXmlFile));
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper serverXMLDoc.setIndentDepth(2);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement jvmEntries = findClassPathElement(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper serverXMLDoc,serverInstName,STR_PROC_DEF);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (jvmEntries != null) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "ConfigureServerXMLTask.rollback - jvmEntries = " +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmEntries.toXMLString());
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // remove IBM encryption JVM options
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = unConfigureJVMOptions(serverXMLDoc,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmEntries, stateAccess);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // We have two cases to handle.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // 1. classpath as attr
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // 2. classpath as element
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (status) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = unConfigureClasspath(serverXMLDoc,jvmEntries,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper stateAccess);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if(status) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper serverXMLDoc.store();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "ConfigureServerXMLTask.rollback - failed to find "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "jvmEntries element");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "ConfigureServerXMLTask.rollback() - " +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "Invalid server.xml file specified = " +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper serverXmlFile);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (Exception ex) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "ConfigureServerXMLTask.rollback() - Exception thrown "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "while un-sconfiguring server.xml file",ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return status;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public LocalizedMessage getExecutionMessage(IStateAccess stateAccess,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Map properties) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String serverXmlFile = (String)stateAccess.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_KEY_SERVER_INSTANCE_DIR) +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_FILE_SEP + STR_SERVER_XML_FILE;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Object[] args = { serverXmlFile };
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LocalizedMessage message =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LocalizedMessage.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LOC_TSK_MSG_CONFIGURE_SERVER_XML_FILE_EXECUTE,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_WAS_GROUP, args);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return message;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public LocalizedMessage getRollBackMessage(IStateAccess stateAccess,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Map properties) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String serverXmlFile = (String)stateAccess.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_KEY_SERVER_INSTANCE_DIR) +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_FILE_SEP + STR_SERVER_XML_FILE;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Object[] args = { serverXmlFile };
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LocalizedMessage message =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LocalizedMessage.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LOC_TSK_MSG_CONFIGURE_SERVER_XML_FILE_ROLLBACK,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_WAS_GROUP, args);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return message;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String LOC_TSK_MSG_CONFIGURE_SERVER_XML_FILE_EXECUTE =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "TSK_MSG_CONFIGURE_SERVER_XML_FILE_EXECUTE";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String LOC_TSK_MSG_CONFIGURE_SERVER_XML_FILE_ROLLBACK =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "TSK_MSG_CONFIGURE_SERVER_XML_FILE_ROLLBACK";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String STR_PROC_DEF = "processDefinitions";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper}