You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@jmeter.apache.org by bu...@apache.org on 2012/02/28 13:46:41 UTC

DO NOT REPLY [Bug 52787] new RenderAsText to TextXML

https://issues.apache.org/bugzilla/show_bug.cgi?id=52787

Lenzen <f....@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         OS/Version|                            |All

--- Comment #1 from Lenzen <f....@gmx.com> 2012-02-28 12:46:41 UTC ---
I'm searching for a "prettyFormat" response (for xml) and I can't find any
renderer. Now I
have changed the class "RenderAsText". This is a quick hack. 

Here is my solution:

package org.apache.jmeter.visualizers;

import javax.swing.JEditorPane;
import javax.swing.JScrollPane;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.util.JMeterUtils;

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.StringReader;
import java.io.StringWriter;

// Referenced classes of package org.apache.jmeter.visualizers:
//            SamplerResultTab, ResultRenderer, ViewResultsFullVisualizer

public class RenderAsText extends SamplerResultTab
    implements ResultRenderer
{

    public RenderAsText()
    {
    }

    public void renderResult(SampleResult sampleResult)
    {
        String response =
ViewResultsFullVisualizer.getResponseAsString(sampleResult);
        showTextResponse(response);
    }

// formate response xml
  public static String prettyFormat(String input, int indent) {
    try {
      Source xmlInput = new StreamSource(new StringReader(input));
      StringWriter stringWriter = new StringWriter();
      StreamResult xmlOutput = new StreamResult(stringWriter);
      Transformer transformer =
TransformerFactory.newInstance().newTransformer();
      transformer.setOutputProperty(OutputKeys.INDENT, "yes");

transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount",
String.valueOf(indent));
      transformer.transform(xmlInput, xmlOutput);
      return xmlOutput.getWriter().toString();
    } catch (Exception e) {
      throw new RuntimeException(e); // simple exception handling, please
review it
    }
  }

  public static String prettyFormat(String input) {
    return prettyFormat(input, 2);
  }

    private void showTextResponse(String response)
    {
        results.setContentType("text/plain");
        if(response != null){
            if(response.startsWith("<?xml version=")){
                results.setText(prettyFormat(response));
            }else{
                results.setText(response);
            }
    }else{        
        results.setText("");        
    }
        //results.setText(response != null ? response : "");
        results.setCaretPosition(0);
        resultsScrollPane.setViewportView(results);

    }

    public String toString()
    {
        return JMeterUtils.getResString("view_results_render_text");
    }
}

If you like you can try it. (see attachment)

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.