From: Bryan Duxbury Date: Wed, 11 Mar 2009 23:40:57 +0000 (+0000) Subject: THRIFT-364. java: Use of enums in other namespaces breaks java generated code X-Git-Tag: 0.2.0~271 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=56c48362202ef2f247f06c59e5824f2e979ab0a9;p=common%2Fthrift.git THRIFT-364. java: Use of enums in other namespaces breaks java generated code This patch checks for different namespaces and prefixes appropriately. git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@752696 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc index f6038d61..943878f1 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -1034,10 +1034,16 @@ void t_java_generator::generate_java_validator(ofstream& out, out << indent() << "// check that fields of type enum have valid values" << endl; for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) { t_field* field = (*f_iter); - + t_type* type = field->get_type(); // if field is an enum, check that its value is valid - if (field->get_type()->is_enum()){ - indent(out) << "if (__isset." << field->get_name() << " && !" << field->get_type()->get_name() << ".VALID_VALUES.contains(" << field->get_name() << ")){" << endl; + if (type->is_enum()){ + string package = ""; + t_program* program = type->get_program(); + if (program != NULL && program != program_) { + package = program->get_namespace("java") + "."; + } + + indent(out) << "if (__isset." << field->get_name() << " && !" << package << type->get_name() << ".VALID_VALUES.contains(" << field->get_name() << ")){" << endl; indent_up(); indent(out) << "throw new TProtocolException(\"Invalid value of field '" << field->get_name() << "'!\");" << endl; indent_down();