All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.commons.validator.util.ValidatorUtils Maven / Gradle / Ivy

Go to download

Apache Commons Validator provides the building blocks for both client side validation and server side data validation. It may be used standalone or with a framework like Struts.

There is a newer version: 1.8.0
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.validator.util;

import java.lang.reflect.InvocationTargetException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.collections.FastHashMap; // DEPRECATED
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.validator.Arg;
import org.apache.commons.validator.Msg;
import org.apache.commons.validator.Var;

/**
 * Basic utility methods.
 * 

* The use of FastHashMap is deprecated and will be replaced in a future * release. *

* * @version $Revision$ */ public class ValidatorUtils { private static final Log LOG = LogFactory.getLog(ValidatorUtils.class); /** *

Replace part of a String with another value.

* * @param value String to perform the replacement on. * @param key The name of the constant. * @param replaceValue The value of the constant. * * @return The modified value. */ public static String replace(String value, String key, String replaceValue) { if (value == null || key == null || replaceValue == null) { return value; } int pos = value.indexOf(key); if (pos < 0) { return value; } int length = value.length(); int start = pos; int end = pos + key.length(); if (length == key.length()) { value = replaceValue; } else if (end == length) { value = value.substring(0, start) + replaceValue; } else { value = value.substring(0, start) + replaceValue + replace(value.substring(end), key, replaceValue); } return value; } /** * Convenience method for getting a value from a bean property as a * String. If the property is a String[] or * Collection and it is empty, an empty String * "" is returned. Otherwise, property.toString() is returned. This method * may return null if there was an error retrieving the * property. * * @param bean The bean object. * @param property The name of the property to access. * * @return The value of the property. */ public static String getValueAsString(Object bean, String property) { Object value = null; try { value = PropertyUtils.getProperty(bean, property); } catch(IllegalAccessException e) { LOG.error(e.getMessage(), e); } catch(InvocationTargetException e) { LOG.error(e.getMessage(), e); } catch(NoSuchMethodException e) { LOG.error(e.getMessage(), e); } if (value == null) { return null; } if (value instanceof String[]) { return ((String[]) value).length > 0 ? value.toString() : ""; } else if (value instanceof Collection) { return ((Collection) value).isEmpty() ? "" : value.toString(); } else { return value.toString(); } } /** * Makes a deep copy of a FastHashMap if the values * are Msg, Arg, * or Var. Otherwise it is a shallow copy. * * @param map FastHashMap to copy. * @return FastHashMap A copy of the FastHashMap that was * passed in. * @deprecated This method is not part of Validator's public API. Validator * will use it internally until FastHashMap references are removed. Use * copyMap() instead. */ @Deprecated public static FastHashMap copyFastHashMap(FastHashMap map) { FastHashMap results = new FastHashMap(); @SuppressWarnings("unchecked") // FastHashMap is not generic Iterator> i = map.entrySet().iterator(); while (i.hasNext()) { Entry entry = i.next(); String key = entry.getKey(); Object value = entry.getValue(); if (value instanceof Msg) { results.put(key, ((Msg) value).clone()); } else if (value instanceof Arg) { results.put(key, ((Arg) value).clone()); } else if (value instanceof Var) { results.put(key, ((Var) value).clone()); } else { results.put(key, value); } } results.setFast(true); return results; } /** * Makes a deep copy of a Map if the values are * Msg, Arg, or Var. Otherwise, * it is a shallow copy. * * @param map The source Map to copy. * * @return A copy of the Map that was passed in. */ public static Map copyMap(Map map) { Map results = new HashMap(); Iterator> i = map.entrySet().iterator(); while (i.hasNext()) { Entry entry = i.next(); String key = entry.getKey(); Object value = entry.getValue(); if (value instanceof Msg) { results.put(key, ((Msg) value).clone()); } else if (value instanceof Arg) { results.put(key, ((Arg) value).clone()); } else if (value instanceof Var) { results.put(key, ((Var) value).clone()); } else { results.put(key, value); } } return results; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy