StartupScriptValidator.java revision de47fb992b4c3414ac5b445d5cab364b0b8b8b43
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg/**
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg *
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * Copyright (c) 2007 Sun Microsystems Inc. All Rights Reserved
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg *
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * The contents of this file are subject to the terms
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * of the Common Development and Distribution License
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * (the License). You may not use this file except in
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * compliance with the License.
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg *
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * You can obtain a copy of the License at
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * https://opensso.dev.java.net/public/CDDLv1.0.html or
0662ed52e814f8f08ef0e09956413a792584eddffuankg * opensso/legal/CDDLv1.0.txt
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * See the License for the specific language governing
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * permission and limitations under the License.
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg *
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * When distributing Covered Code, include this CDDL
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * Header Notice in each file and include the License file
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * at opensso/legal/CDDLv1.0.txt.
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * If applicable, add the following below the CDDL Header,
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * with the fields enclosed by brackets [] replaced by
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * your own identifying information:
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * "Portions Copyrighted [year] [name of copyright owner]"
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg *
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * $Id: StartupScriptValidator.java,v 1.2 2008/06/25 05:52:21 qcheng Exp $
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg *
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg */
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgpackage com.sun.identity.agents.tools.weblogic.v10;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport java.io.File;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport java.util.Map;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport java.util.HashMap;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport com.sun.identity.install.tools.configurator.IStateAccess;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport com.sun.identity.install.tools.configurator.InstallException;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport com.sun.identity.install.tools.configurator.ValidationResult;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport com.sun.identity.install.tools.configurator.ValidationResultStatus;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport com.sun.identity.install.tools.configurator.ValidatorBase;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport com.sun.identity.install.tools.util.Debug;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport com.sun.identity.install.tools.util.FileUtils;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgimport com.sun.identity.install.tools.util.LocalizedMessage;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg/**
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * This task validates Weblogic's startup script.
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg */
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankgpublic class StartupScriptValidator extends ValidatorBase
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg implements IConfigKeys {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg public StartupScriptValidator() throws InstallException {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg super();
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg }
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg /**
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * Method isStartupScriptValid
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg *
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * @param dir
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * @param props
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * @param IStateAccess
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg *
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * @return ValidationResult
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg *
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg */
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg public ValidationResult isStartupScriptValid(String startupScr, Map props,
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg IStateAccess state) {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg ValidationResultStatus validRes = ValidationResultStatus.STATUS_FAILED;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg LocalizedMessage returnMessage = null;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg if ((startupScr != null) && (startupScr.trim().length() >= 0)) {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg if (FileUtils.isFileValid(startupScr)) {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg // Store the script location in install state
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg state.put(STR_KEY_WL_STARTUP_SCRIPT, startupScr);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg // Update state information
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg setStartupScriptDir(state, startupScr);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg setConfigXML(state);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg }
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg returnMessage = LocalizedMessage.get(
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg LOC_VA_MSG_WL_VAL_STARTUP_SCRIPT,
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg STR_WL_GROUP,new Object[] {startupScr});
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg validRes = ValidationResultStatus.STATUS_SUCCESS;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg }
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg if (validRes.getIntValue() ==
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg ValidationResultStatus.INT_STATUS_FAILED) {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg returnMessage =
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg LocalizedMessage.get(LOC_VA_WRN_WL_IN_VAL_STARTUP_SCRIPT,
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg STR_WL_GROUP, new Object[] {startupScr});
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg }
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg Debug.log("startupScriptValidator : Is Startup script " +
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg startupScr + " valid ? " + validRes.isSuccessful());
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg return new ValidationResult(validRes,null,returnMessage);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg }
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg public void initializeValidatorMap() throws InstallException {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg Class[] paramObjs = {String.class,Map.class,IStateAccess.class};
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg try {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg getValidatorMap().put("VALID_WL_STARTUP_SCRIPT",
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg this.getClass().getMethod("isStartupScriptValid",paramObjs));
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg } catch (NoSuchMethodException nsme) {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg Debug.log("StartupScriptValidator: NoSuchMethodException " +
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg "thrown while loading method :",nsme);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg throw new InstallException(LocalizedMessage.get(
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg LOC_VA_ERR_VAL_METHOD_NOT_FOUND),nsme);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg } catch (SecurityException se){
0662ed52e814f8f08ef0e09956413a792584eddffuankg Debug.log("StartupScriptValidator: SecurityException thrown "
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg + "while loading method :",se);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg throw new InstallException(LocalizedMessage.get(
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg LOC_VA_ERR_VAL_METHOD_NOT_FOUND),se);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg } catch (Exception ex){
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg Debug.log("StartupScriptValidator: Exception thrown while " +
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg "loading method :",ex);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg throw new InstallException(LocalizedMessage.get(
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg LOC_VA_ERR_VAL_METHOD_NOT_FOUND),ex);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg }
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg }
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg private void setStartupScriptDir(IStateAccess state, String startupScr) {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg String wlHomeDir = (new File(startupScr)).getParent();
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg state.put(STR_KEY_STARTUP_SCRIPT_DIR, wlHomeDir);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg }
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg private void setConfigXML(IStateAccess state) {
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg String configXML = ((String) state.get(STR_KEY_STARTUP_SCRIPT_DIR)) +
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg STR_FORWARD_SLASH + STR_CONFIG_XML;
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg state.put(STR_KEY_CONFIG_XML, configXML);
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg }
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg /** Hashmap of Validator names and integers */
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg Map validMap = new HashMap();
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg /*
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg * Localized constants
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg */
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg public static String LOC_VA_MSG_WL_VAL_STARTUP_SCRIPT =
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg "VA_MSG_WL_VAL_STARTUP_SCRIPT";
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg public static String LOC_VA_WRN_WL_IN_VAL_STARTUP_SCRIPT =
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg "VA_WRN_WL_IN_VAL_STARTUP_SCRIPT";
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg}
ff7e89a077d93c243bd8261cf3c72b13732ab5b4fuankg