sebb 2003/10/07 05:44:33 Added: src/functions/org/apache/jmeter/functions Property2.java Log: Simplified __property() function intended for use in ThreadGroup GUI etc Revision Changes Path 1.1 jakarta-jmeter/src/functions/org/apache/jmeter/functions/Property2.java Index: Property2.java =================================================================== /* * ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache JMeter" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * "Apache JMeter", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.jmeter.functions; import java.io.Serializable; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; /** * Function to get a JMeter property, or a default. * Does not offer the option to store the value, as it is just as easy * to refetch it. * This is a specialisation of the __property() function to make it * simpler to use for ThreadGroup GUI etc. The name is also shorter. * * Parameters: * - property name * - default value (optional; defaults to "1") * * Usage: * * Define the property in jmeter.properties, or on the command-line: * java ... -Jpropname=value * * Retrieve the value in the appropriate GUI by using the string: * ${__P(propname)} * $(__P(propname,default)} * * Returns: * - the property value, but if not found * - the default value, but if not present * - "1" (suitable for use in ThreadGroup GUI) * * @author sebb AT apache DOT org * @version $Revision: 1.1 $ Updated: $Date: 2003/10/07 12:44:33 $ */ public class Property2 extends AbstractFunction implements Serializable { private static final List desc = new LinkedList(); private static final String KEY = "__P"; // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 1; private static final int MAX_PARAMETER_COUNT = 2; static { desc.add(JMeterUtils.getResString("property_name_param")); desc.add(JMeterUtils.getResString("property_default_param")); } private Object[] values; public Property2() { } public Object clone() { return new Property(); } public synchronized String execute( SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String propertyName = ((CompoundVariable) values[0]).execute(); String propertyDefault = "1"; //$NON-NLS-1$ if (values.length > 1){ // We have a default propertyDefault= ((CompoundVariable) values[1]).execute(); } String propertyValue = JMeterUtils.getPropDefault(propertyName, propertyDefault); return propertyValue; } public void setParameters(Collection parameters) throws InvalidVariableException { values = parameters.toArray(); if ((values.length < MIN_PARAMETER_COUNT) || (values.length > MAX_PARAMETER_COUNT)) { throw new InvalidVariableException( "Parameter Count not between " + MIN_PARAMETER_COUNT + " & " + MAX_PARAMETER_COUNT); } } public String getReferenceKey() { return KEY; } public List getArgumentDesc() { return desc; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
