mstover1    2005/08/30 11:49:37

  Modified:    src/components/org/apache/jmeter/assertions
                        CompareAssertionResources.properties
                        CompareAssertionBeanInfo.java CompareAssertion.java
               src/core/org/apache/jmeter/testbeans TestBeanHelper.java
               src/core/org/apache/jmeter/testbeans/gui TableEditor.java
  Added:       src/components/org/apache/jmeter/assertions
                        SubstitutionElement.java
  Log:
  CompareAssertion regex filters now can take a substitution string that is 
substituted in for the regex matches in the response data.
  
  Revision  Changes    Path
  1.3       +2 -2      
jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionResources.properties
  
  Index: CompareAssertionResources.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionResources.properties,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CompareAssertionResources.properties      29 Aug 2005 18:48:02 -0000      
1.2
  +++ CompareAssertionResources.properties      30 Aug 2005 18:49:37 -0000      
1.3
  @@ -5,5 +5,5 @@
   compareTime.displayName=Compare Time
   compareTime.shortDescription=Verify that all Samplers' return times are 
within a given number of milliseconds
   comparison_filters.displayName=Comparison Filters
  -stringsToSkip.displayName=Regular Expression Filters
  -stringsToSkip.shortDescription=Regular expressions to match elements of 
response data to be ignored when comparing
  \ No newline at end of file
  +stringsToSkip.displayName=Regular Expression Substitutions
  +stringsToSkip.shortDescription=Regular expressions to match elements of 
response data to be substituted when comparing
  \ No newline at end of file
  
  
  
  1.3       +5 -4      
jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionBeanInfo.java
  
  Index: CompareAssertionBeanInfo.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertionBeanInfo.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CompareAssertionBeanInfo.java     29 Aug 2005 18:48:02 -0000      1.2
  +++ CompareAssertionBeanInfo.java     30 Aug 2005 18:49:37 -0000      1.3
  @@ -1,7 +1,7 @@
   package org.apache.jmeter.assertions;
   
   import java.beans.PropertyDescriptor;
  -import java.util.Arrays;
  +import java.util.ArrayList;
   
   import org.apache.jmeter.testbeans.BeanInfoSupport;
   import org.apache.jmeter.testbeans.gui.TableEditor;
  @@ -22,10 +22,11 @@
                p.setValue(NOT_EXPRESSION, Boolean.FALSE);      
                p = property("stringsToSkip");
                p.setPropertyEditorClass(TableEditor.class);
  -             p.setValue(TableEditor.CLASSNAME,"java.lang.String");
  -             p.setValue(TableEditor.HEADERS,new String[]{"Regex String"});
  +             
p.setValue(TableEditor.CLASSNAME,"org.apache.jmeter.assertions.SubstitutionElement");
  +             p.setValue(TableEditor.HEADERS,new String[]{"Regex 
String","Substitution"});
  +             p.setValue(TableEditor.OBJECT_PROPERTIES,new 
String[]{"regex","substitute"});
                p.setValue(NOT_UNDEFINED,Boolean.TRUE);
  -             p.setValue(DEFAULT,Arrays.asList(new String[]{"One","Two"}));
  +             p.setValue(DEFAULT,new ArrayList());
                p.setValue(MULTILINE,Boolean.TRUE);
                
        }
  
  
  
  1.5       +6 -5      
jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertion.java
  
  Index: CompareAssertion.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/assertions/CompareAssertion.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CompareAssertion.java     30 Aug 2005 15:17:26 -0000      1.4
  +++ CompareAssertion.java     30 Aug 2005 18:49:37 -0000      1.5
  @@ -25,7 +25,7 @@
   
        transient List responses;
   
  -     private static final Substitution emptySub = new StringSubstitution("");
  +     private StringSubstitution emptySub = new StringSubstitution("");
   
        transient boolean iterationDone = false;
   
  @@ -33,7 +33,7 @@
   
        private long compareTime = -1;
   
  -     Collection<String> stringsToSkip;
  +     Collection<SubstitutionElement> stringsToSkip;
   
        public CompareAssertion() {
                super();
  @@ -122,9 +122,10 @@
                if (stringsToSkip == null || stringsToSkip.size() == 0) {
                        return content;
                } else {
  -                     for (String regex : stringsToSkip) {
  +                     for (SubstitutionElement regex : stringsToSkip) {
                                log.info("replacing regex: " + regex);
  -                             content = 
Util.substitute(JMeterUtils.getMatcher(), 
JMeterUtils.getPatternCache().getPattern(regex),
  +                             emptySub.setSubstitution(regex.getSubstitute());
  +                             content = 
Util.substitute(JMeterUtils.getMatcher(), 
JMeterUtils.getPatternCache().getPattern(regex.getRegex()),
                                                emptySub, content, 
Util.SUBSTITUTE_ALL);
                        }
                }
  @@ -193,7 +194,7 @@
         *            The stringsToSkip to set.
         */
        public void setStringsToSkip(Collection stringsToSkip) {
  -             this.stringsToSkip = (Collection<String>) stringsToSkip;
  +             this.stringsToSkip = (Collection<SubstitutionElement>) 
stringsToSkip;
        }
   
   }
  
  
  
  1.1                  
jakarta-jmeter/src/components/org/apache/jmeter/assertions/SubstitutionElement.java
  
  Index: SubstitutionElement.java
  ===================================================================
  package org.apache.jmeter.assertions;
  
  import org.apache.jmeter.testelement.AbstractTestElement;
  
  public class SubstitutionElement extends AbstractTestElement {
        private static final long serialVersionUID = 1;
        
        public static final String REGEX = "substitution.regex";
        
        public static final String SUBSTITUTE = "substitution.sub";
  
        public SubstitutionElement() {
                super();
        }
        
        public String getRegex()
        {
                return getProperty(REGEX).getStringValue();
        }
        
        public void setRegex(String regex)
        {
                setProperty(REGEX,regex);
        }
        
        public String getSubstitute()
        {
                return getProperty(SUBSTITUTE).getStringValue();
        }
        
        public void setSubstitute(String sub)
        {
                setProperty(SUBSTITUTE,sub);
        }
        
        
  
  }
  
  
  
  1.6       +15 -24    
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/TestBeanHelper.java
  
  Index: TestBeanHelper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/TestBeanHelper.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestBeanHelper.java       29 Aug 2005 21:04:11 -0000      1.5
  +++ TestBeanHelper.java       30 Aug 2005 18:49:37 -0000      1.6
  @@ -31,6 +31,7 @@
   import org.apache.jmeter.testelement.property.JMeterProperty;
   import org.apache.jmeter.testelement.property.MultiProperty;
   import org.apache.jmeter.testelement.property.PropertyIterator;
  +import org.apache.jmeter.testelement.property.TestElementProperty;
   import org.apache.jorphan.logging.LoggingManager;
   import org.apache.jorphan.util.Converter;
   import org.apache.log.Logger;
  @@ -55,7 +56,6 @@
         * property value map.
         * <p>
         * 
  -      * @deprecated to limit it's usage in expectation of moving it 
elsewhere.
         */
        public static void prepare(TestElement el) {
                if (!(el instanceof TestBean)) {
  @@ -101,7 +101,16 @@
         */
        private static Object unwrapProperty(PropertyDescriptor desc, 
JMeterProperty jprop, Class type) {
                Object value;
  -             if(jprop instanceof MultiProperty)
  +             if(jprop instanceof TestElementProperty)
  +             {
  +                     TestElement te = 
((TestElementProperty)jprop).getElement();
  +                     if(te instanceof TestBean)
  +                     {
  +                             prepare(te);
  +                     }
  +                     value = te;
  +             }
  +             else if(jprop instanceof MultiProperty)
                {
                        value = 
unwrapCollection((MultiProperty)jprop,(String)desc.getValue(TableEditor.CLASSNAME));
                }
  @@ -117,14 +126,13 @@
                        PropertyIterator iter = prop.iterator();
                        while(iter.hasNext())
                        {
  -                             JMeterProperty propVal = iter.next();
                                try
                                {
  -                                     
values.add(Converter.convert(propVal.getStringValue(), Class.forName(type)));
  +                                     
values.add(unwrapProperty(null,iter.next(),Class.forName(type)));
                                }
                                catch(Exception e)
                                {
  -                                     log.error("Couldn't convert object: " + 
propVal.getObjectValue() + " to " + type);
  +                                     log.error("Couldn't convert object: " + 
prop.getObjectValue() + " to " + type,e);
                                }
                        }
                        return values;
  @@ -154,21 +162,4 @@
                        throw new Error(e.toString()); // Programming error: 
bail out.
                }
        }
  -
  -     /**
  -      * Utility method to obtain the value of a property in the given type.
  -      * <p>
  -      * I plan to get rid of this sooner than later, so please don't use it 
much.
  -      * 
  -      * @param property
  -      *            Property to get the value of.
  -      * @param type
  -      *            Type of the result.
  -      * @return an object of the given type if it is one of the known 
supported
  -      *         types, or the value returned by property.getObjectValue
  -      * @deprecated
  -      */
  -     private static Object unwrapProperty(JMeterProperty property, Class 
type) {
  -             return Converter.convert(property.getObjectValue(), type);
  -     }
   }
  
  
  
  1.2       +22 -1     
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TableEditor.java
  
  Index: TableEditor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TableEditor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TableEditor.java  29 Aug 2005 18:48:02 -0000      1.1
  +++ TableEditor.java  30 Aug 2005 18:49:37 -0000      1.2
  @@ -9,6 +9,9 @@
   import java.beans.PropertyDescriptor;
   import java.beans.PropertyEditorSupport;
   import java.lang.reflect.Method;
  +import java.util.Collection;
  +import java.util.LinkedList;
  +import java.util.List;
   
   import javax.swing.CellEditor;
   import javax.swing.JButton;
  @@ -20,6 +23,7 @@
   import javax.swing.event.TableModelEvent;
   import javax.swing.event.TableModelListener;
   
  +import org.apache.jmeter.testelement.property.TestElementProperty;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jorphan.gui.ObjectTableModel;
   import org.apache.jorphan.logging.LoggingManager;
  @@ -99,11 +103,28 @@
        public void setValue(Object value) {
                if(value != null)
                {
  -                     model.setRows((Iterable)value);
  +                     model.setRows(convertCollection((Collection)value));
                }
                else model.clearData();
                this.firePropertyChange();
        }
  +     
  +     private Collection convertCollection(Collection values)
  +     {
  +             List l = new LinkedList();
  +             for(Object obj : values)
  +             {
  +                     if(obj instanceof TestElementProperty)
  +                     {
  +                             l.add(((TestElementProperty)obj).getElement());
  +                     }
  +                     else
  +                     {
  +                             l.add(obj);
  +                     }
  +             }
  +             return l;
  +     }
   
        /* (non-Javadoc)
         * @see java.beans.PropertyEditor#supportsCustomEditor()
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to