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("&amp;");
  +                                             break;
  +                                     case '\'':
  +                                             buffer.append("&apos;");
  +                                             break;
  +                                     case '"':
  +                                             buffer.append("&quot;");
  +                                             break;
  +                                     case '<':
  +                                             buffer.append("&lt;");
  +                                             break;
  +                                     case '>':
  +                                             buffer.append("&gt;");
  +                                             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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to