sebb        2004/09/20 17:41:14

  Modified:    bin      Tag: rel-2_0 jmeter.properties
               src/components/org/apache/jmeter/visualizers Tag: rel-2_0
                        ViewResultsFullVisualizer.java
  Log:
  Bug 23722 - allow frames to be displayed
  Also add facility to not download embedded resources
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.100.2.6 +6 -2      jakarta-jmeter/bin/jmeter.properties
  
  Index: jmeter.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/bin/jmeter.properties,v
  retrieving revision 1.100.2.5
  retrieving revision 1.100.2.6
  diff -u -r1.100.2.5 -r1.100.2.6
  --- jmeter.properties 5 Jul 2004 23:34:18 -0000       1.100.2.5
  +++ jmeter.properties 21 Sep 2004 00:41:14 -0000      1.100.2.6
  @@ -298,4 +298,8 @@
   #mailer.successlimit=2
   #
   # Number of failed samples before a message is sent
  -#mailer.failurelimit=2
  \ No newline at end of file
  +#mailer.failurelimit=2
  +
  +# Should View Results Tree download embedded resources?
  +# TODO should be added to GUI one day
  +#viewresults.embeddedresources=true
  \ No newline at end of file
  
  
  
  No                   revision
  No                   revision
  1.42.2.3  +76 -5     
jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
  
  Index: ViewResultsFullVisualizer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java,v
  retrieving revision 1.42.2.2
  retrieving revision 1.42.2.3
  diff -u -r1.42.2.2 -r1.42.2.3
  --- ViewResultsFullVisualizer.java    12 Jun 2004 18:32:05 -0000      1.42.2.2
  +++ ViewResultsFullVisualizer.java    21 Sep 2004 00:41:14 -0000      1.42.2.3
  @@ -43,9 +43,17 @@
   import javax.swing.event.TreeSelectionEvent;
   import javax.swing.event.TreeSelectionListener;
   import javax.swing.text.BadLocationException;
  +import javax.swing.text.ComponentView;
  +import javax.swing.text.Document;
  +import javax.swing.text.EditorKit;
  +import javax.swing.text.Element;
   import javax.swing.text.Style;
   import javax.swing.text.StyleConstants;
   import javax.swing.text.StyledDocument;
  +import javax.swing.text.View;
  +import javax.swing.text.ViewFactory;
  +import javax.swing.text.html.HTML;
  +import javax.swing.text.html.HTMLEditorKit;
   import javax.swing.tree.DefaultMutableTreeNode;
   import javax.swing.tree.DefaultTreeCellRenderer;
   import javax.swing.tree.DefaultTreeModel;
  @@ -82,6 +90,12 @@
       private static final String HTML_COMMAND = "html";
       private static final String TEXT_COMMAND = "text";
       private boolean textMode = true;
  +    
  +    // TODO add to GUI
  +    private boolean downloadEmbeddedResources =
  +     JMeterUtils.getPropDefault("viewresults.embeddedresources",true);
  +    
  +    private static EditorKit customisedEditor = new LocalHTMLEditorKit();
   
       private DefaultMutableTreeNode root;
       private DefaultTreeModel treeModel;
  @@ -312,7 +326,7 @@
                            }
                            else
                            {
  -                             showRenderedResponse(response);
  +                             showRenderedResponse(response,res);
                            }
                       }
                       else
  @@ -425,12 +439,12 @@
               }
               else
               {
  -                showRenderedResponse(response);
  +                showRenderedResponse(response,res);
               }
           }
       }
   
  -    protected void showRenderedResponse(String response)
  +    protected void showRenderedResponse(String response, SampleResult res)
       {
           if (response == null)
           {
  @@ -453,8 +467,27 @@
           }
   
           String html = response.substring(htmlIndex);
  +        
  +        /* 
  +         * To disable downloading and rendering of images and frames,
  +         * enable the editor-kit. The Stream property can then be
  +         */
  +        
  +             if (!downloadEmbeddedResources)
  +             {
  +                     // Must be done before setContentType
  +                     
results.setEditorKitForContentType("text/html",customisedEditor);
  +             }
  +
           results.setContentType("text/html");
   
  +        if (downloadEmbeddedResources)
  +        {
  +            // Allow JMeter to render frames (and relative images)
  +            // Must be done after setContentType [Why?]
  +                 
results.getDocument().putProperty(Document.StreamDescriptionProperty,res.getURL());
  +        }
  +
           /* Get round problems parsing
            *  <META http-equiv='content-type' content='text/html; charset=utf-8'>
            * See http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23315
  @@ -612,5 +645,43 @@
               }
               return this;
           }
  +    }
  +
  +    private static class LocalHTMLEditorKit extends HTMLEditorKit {
  +
  +     private static final ViewFactory defaultFactory = new LocalHTMLFactory();
  +     
  +     public ViewFactory getViewFactory() {
  +             return defaultFactory;
  +     }
  +
  +     private static class LocalHTMLFactory 
  +             extends javax.swing.text.html.HTMLEditorKit.HTMLFactory 
  +             {
  +             /*
  +              * Provide dummy implementations to suppress download and display
  +              * of related resources:
  +              * - FRAMEs
  +              * - IMAGEs
  +              * TODO create better dummy displays
  +              */
  +             public View create(Element elem) 
  +             {
  +                 Object o = 
elem.getAttributes().getAttribute(StyleConstants.NameAttribute);
  +                 if (o instanceof HTML.Tag) 
  +                 {
  +                         HTML.Tag kind = (HTML.Tag) o;
  +                         if (kind == HTML.Tag.FRAME)
  +                         {
  +                             return new ComponentView(elem);
  +                                 }
  +                                 else if (kind==HTML.Tag.IMG)
  +                                 {
  +                                     return new ComponentView(elem);
  +                             }
  +                     }
  +                     return super.create(elem);
  +             }
  +     }
       }
   }
  
  
  

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

Reply via email to