diff options
Diffstat (limited to 'cpp/src/slice2java/Gen.cpp')
-rw-r--r-- | cpp/src/slice2java/Gen.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp index f03608a955d..f3b86d2aacc 100644 --- a/cpp/src/slice2java/Gen.cpp +++ b/cpp/src/slice2java/Gen.cpp @@ -3176,6 +3176,8 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) string package = getPackage(p); string keyS = typeToString(key, TypeModeIn, package); string valueS = typeToString(value, TypeModeIn, package); + StringList metaData = p->getMetaData(); + string dictType = findMetaData(metaData); int iter; int i; @@ -3365,10 +3367,12 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) out << eb; } - out << sp << nl << "public static java.util.Map" << nl << "read(IceInternal.BasicStream __is)"; + out << sp << nl << "public static " << (dictType.empty() ? "java.util.Map" : dictType); + out << nl << "read(IceInternal.BasicStream __is)"; out << sb; out << nl << "int __sz = __is.readSize();"; - out << nl << "java.util.Map __r = new java.util.HashMap(__sz);"; + out << nl << (dictType.empty() ? "java.util.Map" : dictType) << " __r = new " + << (dictType.empty() ? "java.util.HashMap(__sz)" : dictType + "()") << ';'; out << nl << "for(int __i = 0; __i < __sz; __i++)"; out << sb; iter = 0; @@ -3569,10 +3573,12 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) out << eb; out << eb; - out << sp << nl << "public static java.util.Map" << nl << "read(Ice.InputStream __in)"; + out << sp << nl << "public static " << (dictType.empty() ? "java.util.Map" : dictType) + << nl << "read(Ice.InputStream __in)"; out << sb; out << nl << "int __sz = __in.readSize();"; - out << nl << "java.util.Map __r = new java.util.HashMap(__sz);"; + out << nl << (dictType.empty() ? "java.util.Map" : dictType) << " __r = new " + << (dictType.empty() ? "java.util.HashMap(__sz)" : dictType + "()") << ';'; out << nl << "for(int __i = 0; __i < __sz; __i++)"; out << sb; iter = 0; |