fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major/**
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * The contents of this file are subject to the terms
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * of the Common Development and Distribution License
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * (the License). You may not use this file except in
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * compliance with the License.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * You can obtain a copy of the License at
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * https://opensso.dev.java.net/public/CDDLv1.0.html or
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * opensso/legal/CDDLv1.0.txt
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * See the License for the specific language governing
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * permission and limitations under the License.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * When distributing Covered Code, include this CDDL
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * Header Notice in each file and include the License file
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * at opensso/legal/CDDLv1.0.txt.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * If applicable, add the following below the CDDL Header,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * with the fields enclosed by brackets [] replaced by
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * your own identifying information:
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * "Portions Copyrighted [year] [name of copyright owner]"
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * $Id: StringValidator.java,v 1.2 2008/06/25 05:51:24 qcheng Exp $
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major */
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorpackage com.sun.identity.install.tools.configurator;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport java.util.HashMap;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport java.util.Map;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport com.sun.identity.install.tools.util.Debug;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport com.sun.identity.install.tools.util.LocalizedMessage;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorpublic class StringValidator extends ValidatorBase {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public StringValidator() throws InstallException {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major super();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public ValidationResult isPositiveInteger(String str, Map props,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major IStateAccess state) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major ValidationResultStatus validRes = ValidationResultStatus.STATUS_FAILED;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major LocalizedMessage returnMessage = null;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if ((str != null) && (str.trim().length() >= 0)) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major try {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major int strVal = Integer.parseInt(str);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if (strVal >= 0) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major returnMessage = LocalizedMessage.get(LOC_VA_MSG_NUM_STR,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major new Object[] { str });
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major validRes = ValidationResultStatus.STATUS_SUCCESS;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } else {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator : "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + "Value passed is a negative integer");
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } catch (NumberFormatException nfe) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator.isPositiveInteger(..) "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + "threw exception :", nfe);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if (validRes.getIntValue() == ValidationResultStatus.INT_STATUS_FAILED)
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major returnMessage = LocalizedMessage.get(LOC_VA_WRN_NON_NUM_STR,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major new Object[] { str });
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator : Is string : " + str + " valid ? "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + validRes.isSuccessful());
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return new ValidationResult(validRes, null, returnMessage);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public ValidationResult isStringValid(String str, Map props,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major IStateAccess state) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major ValidationResultStatus validRes = ValidationResultStatus.STATUS_FAILED;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major LocalizedMessage returnMessage = null;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if ((str != null) && (str.trim().length() >= 0)) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major returnMessage = LocalizedMessage.get(LOC_VA_MSG_VAL_STR,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major new Object[] { str });
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major validRes = ValidationResultStatus.STATUS_SUCCESS;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if (validRes.getIntValue() == ValidationResultStatus.INT_STATUS_FAILED)
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major returnMessage = LocalizedMessage.get(LOC_VA_WRN_IN_VAL_STR,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major new Object[] { str });
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator : Is string : " + str + " valid ? "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + validRes.isSuccessful());
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return new ValidationResult(validRes, null, returnMessage);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public ValidationResult isKeyValid(String key, Map props,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major IStateAccess state) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major ValidationResultStatus validRes = ValidationResultStatus.STATUS_FAILED;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major LocalizedMessage returnMessage = null;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major try {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if ((key != null) && (key.length() > 0)) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String minSize = (String) props.get(STR_VAL_MIN_DIGITS);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if ((minSize != null) && (minSize.length() > 0)) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major int minLen = Integer.parseInt(minSize);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator : key min length = " + minLen);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major int passLen = key.length();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if (passLen >= minLen) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major validRes = ValidationResultStatus.STATUS_SUCCESS;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } else {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator : Length of key is "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + "invalid");
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } else {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // User did not enter a min length
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major validRes = ValidationResultStatus.STATUS_SUCCESS;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } catch (Exception ex) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator : Failed to read key with ex :", ex);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if (validRes.getIntValue() == ValidationResultStatus.INT_STATUS_FAILED)
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major returnMessage = LocalizedMessage.get(LOC_VA_WRN_IN_VAL_KEY);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } else {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator : key is valid");
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major returnMessage = LocalizedMessage.get(LOC_VA_MSG_VAL_KEY);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator : Is Key valid ? "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + validRes.isSuccessful());
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return new ValidationResult(validRes, null, returnMessage);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public void initializeValidatorMap() throws InstallException {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Class[] paramObjs = { String.class, Map.class, IStateAccess.class };
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major try {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major getValidatorMap().put("VALID_STRING",
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major this.getClass().getMethod("isStringValid", paramObjs));
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major getValidatorMap().put("POSITIVE_INTEGER",
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major this.getClass().getMethod("isPositiveInteger", paramObjs));
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major getValidatorMap().put("VALID_KEY",
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major this.getClass().getMethod("isKeyValid", paramObjs));
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } catch (NoSuchMethodException nsme) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator: "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + "NoSuchMethodException thrown while loading method :",
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major nsme);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major throw new InstallException(LocalizedMessage
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major .get(LOC_VA_ERR_VAL_METHOD_NOT_FOUND), nsme);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } catch (SecurityException se) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator: "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + "SecurityException thrown while loading method :", se);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major throw new InstallException(LocalizedMessage
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major .get(LOC_VA_ERR_VAL_METHOD_NOT_FOUND), se);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } catch (Exception ex) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("StringValidator: "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + "Exception thrown while loading method :", ex);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major throw new InstallException(LocalizedMessage
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major .get(LOC_VA_ERR_VAL_METHOD_NOT_FOUND), ex);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major /** Hashmap of Validator names and integers */
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Map validMap = new HashMap();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major /*
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * Localized messages
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major */
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static String LOC_VA_WRN_IN_VAL_STR = "VA_WRN_IN_VAL_STR";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static String LOC_VA_MSG_VAL_STR = "VA_MSG_VAL_STR";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static String LOC_VA_MSG_NUM_STR = "VA_MSG_NUM_STR";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static String LOC_VA_WRN_NON_NUM_STR = "VA_WRN_NON_NUM_STR";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static String LOC_VA_MSG_VAL_KEY = "VA_MSG_VAL_KEY";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static String LOC_VA_WRN_IN_VAL_KEY = "VA_WRN_IN_VAL_KEY";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major /*
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * String constants
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major */
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static String STR_VAL_MIN_DIGITS = "minLen";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major}