You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by ms...@apache.org on 2001/06/08 19:01:30 UTC
cvs commit: jakarta-jmeter/src/org/apache/jmeter/save/xml TagHandler.java
mstover1 01/06/08 10:01:30
Modified: src/org/apache/jmeter/protocol/http/save
AuthManagerHandler.java CookieManagerHandler.java
src/org/apache/jmeter/protocol/jdbc/save
JdbcTestSampleHandler.java
src/org/apache/jmeter/save/handlers
AbstractConfigElementHandler.java
ArgumentsHandler.java GenericControllerHandler.java
HttpTestSampleHandler.java JMeterHandler.java
ThreadGroupHandler.java
src/org/apache/jmeter/save/xml TagHandler.java
Log:
Can save special XML characters correctly
Revision Changes Path
1.3 +1 -1 jakarta-jmeter/src/org/apache/jmeter/protocol/http/save/AuthManagerHandler.java
Index: AuthManagerHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/save/AuthManagerHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AuthManagerHandler.java 2001/03/17 22:25:52 1.2
+++ AuthManagerHandler.java 2001/06/08 17:01:10 1.3
@@ -83,7 +83,7 @@
{
AuthManager save = (AuthManager)s;
out.write("<AuthManager name=\"");
- out.write(save.getName());
+ out.write(JMeterHandler.convertToXML(save.getName()));
out.write("\">\n");
JMeterHandler.writeObjects(save.getAuthObjects(),out);
out.write("</AuthManager>\n");
1.3 +1 -1 jakarta-jmeter/src/org/apache/jmeter/protocol/http/save/CookieManagerHandler.java
Index: CookieManagerHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/save/CookieManagerHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CookieManagerHandler.java 2001/03/17 22:25:52 1.2
+++ CookieManagerHandler.java 2001/06/08 17:01:12 1.3
@@ -86,7 +86,7 @@
{
CookieManager cookies = (CookieManager)cm;
out.write("<CookieManager name=\"");
- out.write(cookies.getName());
+ out.write(JMeterHandler.convertToXML(cookies.getName()));
out.write("\">\n");
JMeterHandler.writeObjects(cookies.getCookies(),out);
out.write("</CookieManager>\n");
1.3 +2 -2 jakarta-jmeter/src/org/apache/jmeter/protocol/jdbc/save/JdbcTestSampleHandler.java
Index: JdbcTestSampleHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/jdbc/save/JdbcTestSampleHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JdbcTestSampleHandler.java 2001/03/17 22:25:53 1.2
+++ JdbcTestSampleHandler.java 2001/06/08 17:01:17 1.3
@@ -142,9 +142,9 @@
protected void writeMainTag(Writer out, GenericController controller) throws java.io.IOException
{
out.write("<JdbcTestSample type=\"");
- out.write(controller.getClass().getName());
+ out.write(JMeterHandler.convertToXML(controller.getClass().getName()));
out.write("\" name=\"");
- out.write(controller.getName());
+ out.write(JMeterHandler.convertToXML(controller.getName()));
out.write("\">\n");
}
1.6 +2 -2 jakarta-jmeter/src/org/apache/jmeter/save/handlers/AbstractConfigElementHandler.java
Index: AbstractConfigElementHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/handlers/AbstractConfigElementHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- AbstractConfigElementHandler.java 2001/04/10 17:31:00 1.5
+++ AbstractConfigElementHandler.java 2001/06/08 17:01:19 1.6
@@ -153,7 +153,7 @@
{
AbstractConfigElement saved = (AbstractConfigElement)obj;
out.write("<ConfigElement type=\"");
- out.write(saved.getClass().getName());
+ out.write(JMeterHandler.convertToXML(saved.getClass().getName()));
out.write("\">\n");
Iterator iter = saved.getPropertyNames().iterator();
while (iter.hasNext())
@@ -171,7 +171,7 @@
private void writeProperty(Writer out,String key,Object value) throws IOException
{
out.write("<property name=\"");
- out.write(key);
+ out.write(JMeterHandler.convertToXML(key));
out.write("\">");
JMeterHandler.writeObject(value,out);
out.write("</property>\n");
1.5 +2 -2 jakarta-jmeter/src/org/apache/jmeter/save/handlers/ArgumentsHandler.java
Index: ArgumentsHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/handlers/ArgumentsHandler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ArgumentsHandler.java 2001/04/10 17:31:00 1.4
+++ ArgumentsHandler.java 2001/06/08 17:01:20 1.5
@@ -95,11 +95,11 @@
private void writeArgument(Argument arg,Writer out) throws IOException
{
out.write("<argument name=\"");
- out.write(arg.getName());
+ out.write(JMeterHandler.convertToXML(arg.getName()));
out.write("\">");
try
{
- out.write(arg.getValue().toString());
+ out.write(JMeterHandler.convertToXML(arg.getValue().toString()));
}
catch (Exception ex)
{
1.5 +2 -2 jakarta-jmeter/src/org/apache/jmeter/save/handlers/GenericControllerHandler.java
Index: GenericControllerHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/handlers/GenericControllerHandler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- GenericControllerHandler.java 2001/03/17 22:25:56 1.4
+++ GenericControllerHandler.java 2001/06/08 17:01:20 1.5
@@ -146,9 +146,9 @@
protected void writeMainTag(Writer out, GenericController controller) throws java.io.IOException
{
out.write("<Controller type=\"");
- out.write(controller.getClass().getName());
+ out.write(JMeterHandler.convertToXML(controller.getClass().getName()));
out.write("\" name=\"");
- out.write(controller.getName());
+ out.write(JMeterHandler.convertToXML(controller.getName()));
out.write("\">\n");
}
}
1.4 +2 -2 jakarta-jmeter/src/org/apache/jmeter/save/handlers/HttpTestSampleHandler.java
Index: HttpTestSampleHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/handlers/HttpTestSampleHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- HttpTestSampleHandler.java 2001/03/17 22:25:56 1.3
+++ HttpTestSampleHandler.java 2001/06/08 17:01:21 1.4
@@ -133,9 +133,9 @@
protected void writeMainTag(Writer out, GenericController controller) throws java.io.IOException
{
out.write("<HttpTestSample type=\"");
- out.write(controller.getClass().getName());
+ out.write(JMeterHandler.convertToXML(controller.getClass().getName()));
out.write("\" name=\"");
- out.write(controller.getName());
+ out.write(JMeterHandler.convertToXML(controller.getName()));
out.write("\">\n");
}
1.4 +147 -23 jakarta-jmeter/src/org/apache/jmeter/save/handlers/JMeterHandler.java
Index: JMeterHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/handlers/JMeterHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JMeterHandler.java 2001/03/24 14:39:59 1.3
+++ JMeterHandler.java 2001/06/08 17:01:22 1.4
@@ -52,7 +52,7 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
- package org.apache.jmeter.save.handlers;
+package org.apache.jmeter.save.handlers;
import java.io.*;
import java.util.*;
@@ -60,59 +60,103 @@
import org.apache.jmeter.save.*;
-
/**
- * Title:
- * Description:
- * Copyright: Copyright (c) 2001
- * Company:
- * @author Michael Stover
- * @version 1.0
+ * Title: Description: Copyright: Copyright (c) 2001 Company:
+ *
+ *@author Michael Stover
+ *@created June 8, 2001
+ *@version 1.0
*/
public class JMeterHandler
{
+ private static String TOKENS = "&'\"<>\n\r\t\f\b\\";
+ /**
+ * Constructor for the JMeterHandler object
+ */
public JMeterHandler()
{
}
- public static void writeConfigElements(Collection configs,Writer out) throws IOException
+ /**
+ * Description of the Method
+ *
+ *@param configs Description of Parameter
+ *@param out Description of Parameter
+ *@exception IOException Description of Exception
+ */
+ public static void writeConfigElements(Collection configs, Writer out) throws IOException
{
out.write("<configElements>\n");
- writeObjects(configs,out);
+ writeObjects(configs, out);
out.write("</configElements>\n");
}
- public static void writeControllers(Collection controls,Writer out) throws IOException
+ /**
+ * Description of the Method
+ *
+ *@param controls Description of Parameter
+ *@param out Description of Parameter
+ *@exception IOException Description of Exception
+ */
+ public static void writeControllers(Collection controls, Writer out) throws IOException
{
out.write("<controllers>\n");
- writeObjects(controls,out);
+ writeObjects(controls, out);
out.write("</controllers>\n");
}
- public static void writeThreadGroups(Collection groups,Writer out) throws IOException
+ /**
+ * Description of the Method
+ *
+ *@param groups Description of Parameter
+ *@param out Description of Parameter
+ *@exception IOException Description of Exception
+ */
+ public static void writeThreadGroups(Collection groups, Writer out) throws IOException
{
out.write("<threadgroups>\n");
- writeObjects(groups,out);
+ writeObjects(groups, out);
out.write("</threadgroups>\n");
}
- public static void writeListeners(Collection listeners,Writer out) throws IOException
+ /**
+ * Description of the Method
+ *
+ *@param listeners Description of Parameter
+ *@param out Description of Parameter
+ *@exception IOException Description of Exception
+ */
+ public static void writeListeners(Collection listeners, Writer out) throws IOException
{
out.write("<listeners>\n");
- writeObjects(listeners,out);
+ writeObjects(listeners, out);
out.write("</listeners>\n");
}
- public static void writeTimers(Collection timers,Writer out) throws IOException
+ /**
+ * Description of the Method
+ *
+ *@param timers Description of Parameter
+ *@param out Description of Parameter
+ *@exception IOException Description of Exception
+ */
+ public static void writeTimers(Collection timers, Writer out) throws IOException
{
out.write("<timers>\n");
- writeObjects(timers,out);
+ writeObjects(timers, out);
out.write("</timers>\n");
}
- public static void writeObjects(Collection objects,Writer out) throws IOException
+ /**
+ * Description of the Method
+ *
+ *@param objects Description of Parameter
+ *@param out Description of Parameter
+ *@exception IOException Description of Exception
+ */
+ public static void writeObjects(Collection objects, Writer out) throws IOException
{
Iterator iter = objects.iterator();
while (iter.hasNext())
@@ -122,6 +166,13 @@
}
}
+ /**
+ * Description of the Method
+ *
+ *@param obj Description of Parameter
+ *@param out Description of Parameter
+ *@exception IOException Description of Exception
+ */
public static void writeObject(Object obj, Writer out) throws IOException
{
if (obj instanceof Saveable)
@@ -136,12 +187,85 @@
ex.printStackTrace();
}
}
-
else
{
- out.write(obj.toString());
+ out.write(convertToXML(obj.toString()));
}
}
-
-}
\ No newline at end of file
+ /**
+ * Description of the Method
+ *
+ *@param input Description of Parameter
+ *@return Description of the Returned Value
+ */
+ public static String convertToXML(String input)
+ {
+ if (input == null)
+ {
+ return null;
+ }
+ String retVal = "";
+ StringBuffer buffer = new StringBuffer(input);
+ int length = buffer.length();
+ for (int i = 0; i < length; i++)
+ {
+ char ch = buffer.charAt(i);
+ int chInt = (int) ch;
+ if (Character.isLetterOrDigit(ch) || ch == '\n' || ch == '\r' || ch == '\t' || ch == ' ')
+ {
+ continue;
+ }
+ int chType = Character.getType(ch);
+ if (chType == Character.CONTROL || chType == Character.UNASSIGNED)
+ {
+ buffer.setCharAt(i, ' ');
+ }
+ }
+ input = buffer.toString();
+ buffer = new StringBuffer();
+ java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(input, TOKENS, true);
+ while (tokenizer.hasMoreTokens())
+ {
+ String nextToken = tokenizer.nextToken();
+ length = nextToken.length();
+ if (length > 1)
+ {
+ buffer.append(nextToken);
+ }
+ else if (length == 1)
+ {
+ char ch = nextToken.charAt(0);
+ switch (ch)
+ {
+ case '&':
+ buffer.append("&");
+ break;
+ case '\'':
+ buffer.append("'");
+ break;
+ case '"':
+ buffer.append(""");
+ break;
+ case '<':
+ buffer.append("<");
+ break;
+ case '>':
+ buffer.append(">");
+ break;
+ case '\n':
+ case '\r':
+ case '\t':
+ case '\f':
+ case '\b':
+ case '\\':
+ buffer.append("&#");buffer.append((int)ch);buffer.append(";");
+ break;
+ default:
+ buffer.append(nextToken);
+ }
+ }
+ }
+ return buffer.toString();
+ }
+}
1.3 +1 -1 jakarta-jmeter/src/org/apache/jmeter/save/handlers/ThreadGroupHandler.java
Index: ThreadGroupHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/handlers/ThreadGroupHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ThreadGroupHandler.java 2001/03/17 22:25:56 1.2
+++ ThreadGroupHandler.java 2001/06/08 17:01:22 1.3
@@ -85,7 +85,7 @@
{
ThreadGroup save = (ThreadGroup)s;
out.write("<ThreadGroup name=\"");
- out.write(save.getName());
+ out.write(JMeterHandler.convertToXML(save.getName()));
out.write("\" numThreads=\"");
out.write(""+save.getNumThreads());
out.write("\">\n");
1.4 +30 -13 jakarta-jmeter/src/org/apache/jmeter/save/xml/TagHandler.java
Index: TagHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/xml/TagHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TagHandler.java 2001/03/17 22:25:56 1.3
+++ TagHandler.java 2001/06/08 17:01:28 1.4
@@ -78,7 +78,9 @@
protected String tagName;
protected XmlHandler xmlParent;
+ private StringBuffer dataStore;
+
public abstract void setAtts(Attributes atts) throws Exception;
public void setXmlParent(XmlHandler xml)
@@ -195,29 +197,43 @@
protected void callTagCombo(String data)
{
- try
+ if(dataStore == null)
+ {
+ dataStore = new StringBuffer();
+ }
+ dataStore.append(data);
+ }
+
+ private void releaseData()
+ {
+ if(dataStore != null)
{
- if(getMethodName().equals(""))
+ try
{
- setData(data);
+ if(getMethodName().equals(""))
+ {
+ setData(dataStore.toString());
+ }
+ else
+ {
+ Method method = this.getClass().getMethod(getMethodName(), new Class[]{String.class});
+ method.invoke(this, new Object[]{dataStore.toString()});
+ }
}
- else
+ catch(NoSuchMethodException e)
{
- Method method = this.getClass().getMethod(getMethodName(), new Class[]{String.class});
- method.invoke(this, new Object[]{data});
}
- }
- catch(NoSuchMethodException e)
- {
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
}
+ dataStore = null;
}
protected void passToHandler(String localName, Attributes atts)
{
+ releaseData();
try
{
Class handler = this.getClass();
@@ -242,6 +258,7 @@
protected void passToHandler(String localName)
{
+ releaseData();
try
{
Class handler = this.getClass();
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org