diff options
Diffstat (limited to 'cpp/src/slice2java/Gen.cpp')
-rw-r--r-- | cpp/src/slice2java/Gen.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp index 0240d86d6ec..cdab743ae50 100644 --- a/cpp/src/slice2java/Gen.cpp +++ b/cpp/src/slice2java/Gen.cpp @@ -2269,7 +2269,9 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p) out << eb; out << nl << "catch (IceInternal.NonRepeatable __ex)"; out << sb; - if (op->nonmutating()) + list<string> metaData = op->getMetaData(); + bool nonmutating = find(metaData.begin(), metaData.end(), "nonmutating") != metaData.end(); + if (nonmutating) { out << nl << "__cnt = __handleException(__ex.get(), __cnt);"; } @@ -3073,10 +3075,10 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p) out << "java.util.Map __context)"; writeDelegateThrowsClause(scope, throws); out << sb; - out << nl << "IceInternal.Outgoing __out = new " - << "IceInternal.Outgoing(__connection, __reference, false, \"" - << op->name() << "\", " << (op->nonmutating() ? "true" : "false") - << ", __context);"; + list<string> metaData = op->getMetaData(); + bool nonmutating = find(metaData.begin(), metaData.end(), "nonmutating") != metaData.end(); + out << nl << "IceInternal.Outgoing __out = new IceInternal.Outgoing(__connection, __reference, false, \"" + << op->name() << "\", " << (nonmutating ? "true" : "false") << ", __context);"; if (!inParams.empty()) { out << nl << "IceInternal.BasicStream __os = __out.os();"; |