Use proper name for catching exceptions

Reviewed By: tbr-dave


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664934 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_xsd_generator.cc b/compiler/cpp/src/generate/t_xsd_generator.cc
index b711440..a2a6c43 100644
--- a/compiler/cpp/src/generate/t_xsd_generator.cc
+++ b/compiler/cpp/src/generate/t_xsd_generator.cc
@@ -122,13 +122,13 @@
   indent(f_xsd_) << s_xsd_types_.str();
 
   // Keep a list of all the possible exceptions that might get thrown
-  set<t_struct*> all_xceptions;
+  map<string, t_struct*> all_xceptions;
 
   // List the elements that you might actually get
   vector<t_function*> functions = tservice->get_functions();
   vector<t_function*>::iterator f_iter; 
   for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
-    string elemname = (*f_iter)->get_name() + "_result";
+    string elemname = (*f_iter)->get_name() + "_response";
     t_type* returntype = (*f_iter)->get_returntype();
     generate_element(f_xsd_, elemname, returntype);
     f_xsd_ << endl;
@@ -137,13 +137,13 @@
     const std::vector<t_field*>& xceptions = xs->get_members();
     vector<t_field*>::const_iterator x_iter;
     for (x_iter = xceptions.begin(); x_iter != xceptions.end(); ++x_iter) {
-      all_xceptions.insert((t_struct*)((*x_iter)->get_type()));
+      all_xceptions[(*x_iter)->get_name()] = (t_struct*)((*x_iter)->get_type());
     }
   }
 
-  set<t_struct*>::iterator ax_iter;
+  map<string, t_struct*>::iterator ax_iter;
   for (ax_iter = all_xceptions.begin(); ax_iter != all_xceptions.end(); ++ax_iter) {
-    generate_element(f_xsd_, (*ax_iter)->get_name(), *ax_iter);
+    generate_element(f_xsd_, ax_iter->first, ax_iter->second);
   }
 
   // Close the XSD document