de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper/**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Copyright (c) 2007 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: StartupScriptValidator.java,v 1.2 2008/06/25 05:52:21 qcheng Exp $
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperpackage com.sun.identity.agents.tools.weblogic.v10;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport java.io.File;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport java.util.Map;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport java.util.HashMap;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.configurator.IStateAccess;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.configurator.InstallException;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.configurator.ValidationResult;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.configurator.ValidationResultStatus;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.configurator.ValidatorBase;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.Debug;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.FileUtils;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.LocalizedMessage;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper/**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * This task validates Weblogic's startup script.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperpublic class StartupScriptValidator extends ValidatorBase
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper implements IConfigKeys {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public StartupScriptValidator() throws InstallException {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper super();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Method isStartupScriptValid
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * @param dir
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * @param props
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * @param IStateAccess
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * @return ValidationResult
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public ValidationResult isStartupScriptValid(String startupScr, Map props,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper IStateAccess state) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper ValidationResultStatus validRes = ValidationResultStatus.STATUS_FAILED;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LocalizedMessage returnMessage = null;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((startupScr != null) && (startupScr.trim().length() >= 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (FileUtils.isFileValid(startupScr)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // Store the script location in install state
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper state.put(STR_KEY_WL_STARTUP_SCRIPT, startupScr);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // Update state information
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper setStartupScriptDir(state, startupScr);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper setConfigXML(state);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper returnMessage = LocalizedMessage.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LOC_VA_MSG_WL_VAL_STARTUP_SCRIPT,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_WL_GROUP,new Object[] {startupScr});
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper validRes = ValidationResultStatus.STATUS_SUCCESS;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (validRes.getIntValue() ==
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper ValidationResultStatus.INT_STATUS_FAILED) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper returnMessage =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LocalizedMessage.get(LOC_VA_WRN_WL_IN_VAL_STARTUP_SCRIPT,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_WL_GROUP, new Object[] {startupScr});
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("startupScriptValidator : Is Startup script " +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper startupScr + " valid ? " + validRes.isSuccessful());
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return new ValidationResult(validRes,null,returnMessage);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public void initializeValidatorMap() throws InstallException {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Class[] paramObjs = {String.class,Map.class,IStateAccess.class};
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper try {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper getValidatorMap().put("VALID_WL_STARTUP_SCRIPT",
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper this.getClass().getMethod("isStartupScriptValid",paramObjs));
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (NoSuchMethodException nsme) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("StartupScriptValidator: NoSuchMethodException " +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "thrown while loading method :",nsme);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper throw new InstallException(LocalizedMessage.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LOC_VA_ERR_VAL_METHOD_NOT_FOUND),nsme);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (SecurityException se){
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("StartupScriptValidator: SecurityException thrown "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "while loading method :",se);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper throw new InstallException(LocalizedMessage.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LOC_VA_ERR_VAL_METHOD_NOT_FOUND),se);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (Exception ex){
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("StartupScriptValidator: Exception thrown while " +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "loading method :",ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper throw new InstallException(LocalizedMessage.get(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper LOC_VA_ERR_VAL_METHOD_NOT_FOUND),ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper private void setStartupScriptDir(IStateAccess state, String startupScr) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String wlHomeDir = (new File(startupScr)).getParent();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper state.put(STR_KEY_STARTUP_SCRIPT_DIR, wlHomeDir);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper private void setConfigXML(IStateAccess state) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String configXML = ((String) state.get(STR_KEY_STARTUP_SCRIPT_DIR)) +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_FORWARD_SLASH + STR_CONFIG_XML;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper state.put(STR_KEY_CONFIG_XML, configXML);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /** Hashmap of Validator names and integers */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Map validMap = new HashMap();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /*
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Localized constants
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static String LOC_VA_MSG_WL_VAL_STARTUP_SCRIPT =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "VA_MSG_WL_VAL_STARTUP_SCRIPT";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static String LOC_VA_WRN_WL_IN_VAL_STARTUP_SCRIPT =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "VA_WRN_WL_IN_VAL_STARTUP_SCRIPT";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper}