summaryrefslogtreecommitdiff
path: root/cpp/src/slice2java/Gen.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2012-10-08 15:03:46 +0200
committerBenoit Foucher <benoit@zeroc.com>2012-10-08 15:03:46 +0200
commitd36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae (patch)
tree7abffd29e98ff112cec85b658fab404961f8306a /cpp/src/slice2java/Gen.cpp
parentFreeBSD port (diff)
parentWin32 fixes (diff)
downloadice-d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae.tar.bz2
ice-d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae.tar.xz
ice-d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae.zip
Merge branch 'mx' into encoding11
Conflicts: cpp/demo/Freeze/backup/.depend cpp/demo/Freeze/backup/.depend.mak cpp/demo/Freeze/bench/.depend cpp/demo/Freeze/bench/.depend.mak cpp/demo/Freeze/casino/.depend cpp/demo/Freeze/casino/.depend.mak cpp/demo/Freeze/customEvictor/.depend cpp/demo/Freeze/customEvictor/.depend.mak cpp/demo/Freeze/library/.depend cpp/demo/Freeze/library/.depend.mak cpp/demo/Freeze/phonebook/.depend cpp/demo/Freeze/phonebook/.depend.mak cpp/demo/Freeze/transform/.depend cpp/demo/Freeze/transform/.depend.mak cpp/demo/Glacier2/callback/.depend cpp/demo/Glacier2/callback/.depend.mak cpp/demo/Glacier2/chat/.depend cpp/demo/Glacier2/chat/.depend.mak cpp/demo/Ice/async/.depend cpp/demo/Ice/async/.depend.mak cpp/demo/Ice/bidir/.depend cpp/demo/Ice/bidir/.depend.mak cpp/demo/Ice/callback/.depend cpp/demo/Ice/callback/.depend.mak cpp/demo/Ice/converter/.depend cpp/demo/Ice/converter/.depend.mak cpp/demo/Ice/hello/.depend cpp/demo/Ice/hello/.depend.mak cpp/demo/Ice/interleaved/.depend cpp/demo/Ice/interleaved/.depend.mak cpp/demo/Ice/invoke/.depend cpp/demo/Ice/invoke/.depend.mak cpp/demo/Ice/latency/.depend cpp/demo/Ice/latency/.depend.mak cpp/demo/Ice/minimal/.depend cpp/demo/Ice/minimal/.depend.mak cpp/demo/Ice/multicast/.depend cpp/demo/Ice/multicast/.depend.mak cpp/demo/Ice/nested/.depend cpp/demo/Ice/nested/.depend.mak cpp/demo/Ice/nrvo/.depend cpp/demo/Ice/nrvo/.depend.mak cpp/demo/Ice/plugin/.depend cpp/demo/Ice/plugin/.depend.mak cpp/demo/Ice/session/.depend cpp/demo/Ice/session/.depend.mak cpp/demo/Ice/throughput/.depend cpp/demo/Ice/throughput/.depend.mak cpp/demo/Ice/value/.depend cpp/demo/Ice/value/.depend.mak cpp/demo/IceBox/hello/.depend cpp/demo/IceBox/hello/.depend.mak cpp/demo/IceGrid/allocate/.depend cpp/demo/IceGrid/allocate/.depend.mak cpp/demo/IceGrid/icebox/.depend cpp/demo/IceGrid/icebox/.depend.mak cpp/demo/IceGrid/replication/.depend cpp/demo/IceGrid/replication/.depend.mak cpp/demo/IceGrid/secure/.depend cpp/demo/IceGrid/secure/.depend.mak cpp/demo/IceGrid/sessionActivation/.depend cpp/demo/IceGrid/sessionActivation/.depend.mak cpp/demo/IceGrid/simple/.depend cpp/demo/IceGrid/simple/.depend.mak cpp/demo/IceStorm/clock/.depend cpp/demo/IceStorm/clock/.depend.mak cpp/demo/IceStorm/counter/.depend cpp/demo/IceStorm/counter/.depend.mak cpp/demo/IceStorm/replicated/.depend cpp/demo/IceStorm/replicated/.depend.mak cpp/demo/IceStorm/replicated2/.depend cpp/demo/IceStorm/replicated2/.depend.mak cpp/demo/book/evictor_filesystem/.depend cpp/demo/book/evictor_filesystem/.depend.mak cpp/demo/book/lifecycle/.depend cpp/demo/book/lifecycle/.depend.mak cpp/demo/book/map_filesystem/.depend cpp/demo/book/map_filesystem/.depend.mak cpp/demo/book/printer/.depend cpp/demo/book/printer/.depend.mak cpp/demo/book/simple_filesystem/.depend cpp/demo/book/simple_filesystem/.depend.mak cpp/include/Ice/Outgoing.h cpp/include/Ice/OutgoingAsync.h cpp/include/Ice/StreamTraits.h cpp/src/Freeze/.depend cpp/src/Freeze/.depend.mak cpp/src/FreezeScript/.depend cpp/src/FreezeScript/.depend.mak cpp/src/Glacier2/.depend cpp/src/Glacier2/.depend.mak cpp/src/Glacier2Lib/.depend cpp/src/Glacier2Lib/.depend.mak cpp/src/Ice/.depend cpp/src/Ice/.depend.mak cpp/src/IceBox/.depend cpp/src/IceBox/.depend.mak cpp/src/IceDB/.depend cpp/src/IceDB/.depend.mak cpp/src/IceGrid/.depend cpp/src/IceGrid/.depend.mak cpp/src/IceGrid/FreezeDB/.depend cpp/src/IceGrid/FreezeDB/.depend.mak cpp/src/IceGrid/ServerCache.h cpp/src/IceGrid/ServerI.h cpp/src/IceGridLib/.depend cpp/src/IceGridLib/.depend.mak cpp/src/IcePatch2/.depend cpp/src/IcePatch2/.depend.mak cpp/src/IcePatch2Lib/.depend cpp/src/IcePatch2Lib/.depend.mak cpp/src/IceSSL/.depend cpp/src/IceSSL/.depend.mak cpp/src/IceStorm/.depend cpp/src/IceStorm/.depend.mak cpp/src/IceStorm/FreezeDB/.depend cpp/src/IceStorm/FreezeDB/.depend.mak cpp/src/IceStormLib/.depend cpp/src/IceStormLib/.depend.mak cpp/src/slice2cpp/Gen.cpp cpp/test/Freeze/complex/.depend cpp/test/Freeze/complex/.depend.mak cpp/test/Freeze/dbmap/.depend cpp/test/Freeze/dbmap/.depend.mak cpp/test/Freeze/evictor/.depend cpp/test/Freeze/evictor/.depend.mak cpp/test/Freeze/fileLock/.depend cpp/test/Freeze/fileLock/.depend.mak cpp/test/FreezeScript/dbmap/.depend cpp/test/FreezeScript/dbmap/.depend.mak cpp/test/FreezeScript/evictor/.depend cpp/test/FreezeScript/evictor/.depend.mak cpp/test/Glacier2/attack/.depend cpp/test/Glacier2/attack/.depend.mak cpp/test/Glacier2/dynamicFiltering/.depend cpp/test/Glacier2/dynamicFiltering/.depend.mak cpp/test/Glacier2/override/.depend cpp/test/Glacier2/override/.depend.mak cpp/test/Glacier2/router/.depend cpp/test/Glacier2/router/.depend.mak cpp/test/Glacier2/sessionControl/.depend cpp/test/Glacier2/sessionControl/.depend.mak cpp/test/Glacier2/sessionHelper/.depend cpp/test/Glacier2/sessionHelper/.depend.mak cpp/test/Glacier2/ssl/.depend cpp/test/Glacier2/ssl/.depend.mak cpp/test/Glacier2/staticFiltering/.depend cpp/test/Glacier2/staticFiltering/.depend.mak cpp/test/Ice/adapterDeactivation/.depend cpp/test/Ice/adapterDeactivation/.depend.mak cpp/test/Ice/ami/.depend cpp/test/Ice/ami/.depend.mak cpp/test/Ice/background/.depend cpp/test/Ice/background/.depend.mak cpp/test/Ice/binding/.depend cpp/test/Ice/binding/.depend.mak cpp/test/Ice/checksum/.depend cpp/test/Ice/checksum/.depend.mak cpp/test/Ice/checksum/server/.depend cpp/test/Ice/checksum/server/.depend.mak cpp/test/Ice/custom/.depend cpp/test/Ice/custom/.depend.mak cpp/test/Ice/defaultServant/.depend cpp/test/Ice/defaultServant/.depend.mak cpp/test/Ice/defaultValue/.depend cpp/test/Ice/defaultValue/.depend.mak cpp/test/Ice/dispatcher/.depend cpp/test/Ice/dispatcher/.depend.mak cpp/test/Ice/exceptions/.depend cpp/test/Ice/exceptions/.depend.mak cpp/test/Ice/facets/.depend cpp/test/Ice/facets/.depend.mak cpp/test/Ice/faultTolerance/.depend cpp/test/Ice/faultTolerance/.depend.mak cpp/test/Ice/gc/.depend cpp/test/Ice/gc/.depend.mak cpp/test/Ice/hash/.depend cpp/test/Ice/hash/.depend.mak cpp/test/Ice/hold/.depend cpp/test/Ice/hold/.depend.mak cpp/test/Ice/info/.depend cpp/test/Ice/info/.depend.mak cpp/test/Ice/inheritance/.depend cpp/test/Ice/inheritance/.depend.mak cpp/test/Ice/interceptor/.depend cpp/test/Ice/interceptor/.depend.mak cpp/test/Ice/invoke/.depend cpp/test/Ice/invoke/.depend.mak cpp/test/Ice/location/.depend cpp/test/Ice/location/.depend.mak cpp/test/Ice/objects/.depend cpp/test/Ice/objects/.depend.mak cpp/test/Ice/operations/.depend cpp/test/Ice/operations/.depend.mak cpp/test/Ice/plugin/.depend cpp/test/Ice/plugin/.depend.mak cpp/test/Ice/properties/.depend cpp/test/Ice/properties/.depend.mak cpp/test/Ice/proxy/.depend cpp/test/Ice/proxy/.depend.mak cpp/test/Ice/retry/.depend cpp/test/Ice/retry/.depend.mak cpp/test/Ice/servantLocator/.depend cpp/test/Ice/servantLocator/.depend.mak cpp/test/Ice/slicing/exceptions/.depend cpp/test/Ice/slicing/exceptions/.depend.mak cpp/test/Ice/slicing/objects/.depend cpp/test/Ice/slicing/objects/.depend.mak cpp/test/Ice/stream/.depend cpp/test/Ice/stream/.depend.mak cpp/test/Ice/stringConverter/.depend cpp/test/Ice/stringConverter/.depend.mak cpp/test/Ice/threadPoolPriority/.depend cpp/test/Ice/threadPoolPriority/.depend.mak cpp/test/Ice/timeout/.depend cpp/test/Ice/timeout/.depend.mak cpp/test/Ice/udp/.depend cpp/test/Ice/udp/.depend.mak cpp/test/IceBox/configuration/.depend cpp/test/IceBox/configuration/.depend.mak cpp/test/IceGrid/activation/.depend cpp/test/IceGrid/activation/.depend.mak cpp/test/IceGrid/admin/.depend cpp/test/IceGrid/admin/.depend.mak cpp/test/IceGrid/allocation/.depend cpp/test/IceGrid/allocation/.depend.mak cpp/test/IceGrid/deployer/.depend cpp/test/IceGrid/deployer/.depend.mak cpp/test/IceGrid/distribution/.depend cpp/test/IceGrid/distribution/.depend.mak cpp/test/IceGrid/replicaGroup/.depend cpp/test/IceGrid/replicaGroup/.depend.mak cpp/test/IceGrid/replication/.depend cpp/test/IceGrid/replication/.depend.mak cpp/test/IceGrid/session/.depend cpp/test/IceGrid/session/.depend.mak cpp/test/IceGrid/simple/.depend cpp/test/IceGrid/simple/.depend.mak cpp/test/IceGrid/update/.depend cpp/test/IceGrid/update/.depend.mak cpp/test/IceSSL/configuration/.depend cpp/test/IceSSL/configuration/.depend.mak cpp/test/IceStorm/federation/.depend cpp/test/IceStorm/federation/.depend.mak cpp/test/IceStorm/federation2/.depend cpp/test/IceStorm/federation2/.depend.mak cpp/test/IceStorm/rep1/.depend cpp/test/IceStorm/rep1/.depend.mak cpp/test/IceStorm/repgrid/.depend cpp/test/IceStorm/repgrid/.depend.mak cpp/test/IceStorm/repstress/.depend cpp/test/IceStorm/repstress/.depend.mak cpp/test/IceStorm/single/.depend cpp/test/IceStorm/single/.depend.mak cpp/test/IceStorm/stress/.depend cpp/test/IceStorm/stress/.depend.mak cpp/test/Slice/keyword/.depend cpp/test/Slice/keyword/.depend.mak cpp/test/Slice/parser/.depend cpp/test/Slice/parser/.depend.mak cpp/test/Slice/structure/.depend cpp/test/Slice/structure/.depend.mak py/modules/IcePy/.depend py/modules/IcePy/.depend.mak
Diffstat (limited to 'cpp/src/slice2java/Gen.cpp')
-rw-r--r--cpp/src/slice2java/Gen.cpp31
1 files changed, 23 insertions, 8 deletions
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp
index 33fb8374ec2..666e23f1104 100644
--- a/cpp/src/slice2java/Gen.cpp
+++ b/cpp/src/slice2java/Gen.cpp
@@ -4335,7 +4335,11 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p)
out << sb;
out << nl << "__ctx = _emptyContext;";
out << eb;
+ out << nl << "final Ice.Instrumentation.InvocationObserver __observer = IceInternal.ObserverHelper.get(this, ";
+ out << "\"" << opName << "\", __ctx);";
out << nl << "int __cnt = 0;";
+ out << nl << "try";
+ out << sb;
out << nl << "while(true)";
out << sb;
out << nl << "Ice._ObjectDel __delBase = null;";
@@ -4352,7 +4356,7 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p)
{
out << "return ";
}
- out << "__del." << opName << spar << args << "__ctx" << epar << ';';
+ out << "__del." << opName << spar << args << "__ctx" << "__observer" << epar << ';';
if(!ret)
{
out << nl << "return;";
@@ -4362,16 +4366,24 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p)
out << sb;
if(op->mode() == Operation::Idempotent || op->mode() == Operation::Nonmutating)
{
- out << nl << "__cnt = __handleExceptionWrapperRelaxed(__delBase, __ex, null, __cnt);";
+ out << nl << "__cnt = __handleExceptionWrapperRelaxed(__delBase, __ex, null, __cnt, __observer);";
}
else
{
- out << nl << "__handleExceptionWrapper(__delBase, __ex);";
+ out << nl << "__handleExceptionWrapper(__delBase, __ex, __observer);";
}
out << eb;
out << nl << "catch(Ice.LocalException __ex)";
out << sb;
- out << nl << "__cnt = __handleException(__delBase, __ex, null, __cnt);";
+ out << nl << "__cnt = __handleException(__delBase, __ex, null, __cnt, __observer);";
+ out << eb;
+ out << eb;
+ out << eb;
+ out << nl << "finally";
+ out << sb;
+ out << nl << "if(__observer != null)";
+ out << sb;
+ out << nl << "__observer.detach();";
out << eb;
out << eb;
out << eb;
@@ -5359,6 +5371,7 @@ Slice::Gen::DelegateVisitor::visitClassDefStart(const ClassDefPtr& p)
out << sb;
string contextParam = "java.util.Map<String, String> __ctx";
+ string observerParam = "Ice.Instrumentation.InvocationObserver __obsv";
OperationList ops = p->operations();
for(OperationList::iterator r = ops.begin(); r != ops.end(); ++r)
@@ -5375,7 +5388,7 @@ Slice::Gen::DelegateVisitor::visitClassDefStart(const ClassDefPtr& p)
throws.unique();
out << sp;
- out << nl << retS << ' ' << opName << spar << params << contextParam << epar;
+ out << nl << retS << ' ' << opName << spar << params << contextParam << observerParam << epar;
writeDelegateThrowsClause(package, throws);
out << ';';
}
@@ -5411,6 +5424,7 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
out << sb;
string contextParam = "java.util.Map<String, String> __ctx";
+ string observerParam = "Ice.Instrumentation.InvocationObserver __observer";
OperationList ops = p->allOperations();
for(OperationList::iterator r = ops.begin(); r != ops.end(); ++r)
@@ -5457,12 +5471,12 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
vector<string> params = getParamsProxy(op, package);
out << sp;
- out << nl << "public " << retS << nl << opName << spar << params << contextParam << epar;
+ out << nl << "public " << retS << nl << opName << spar << params << contextParam << observerParam << epar;
writeDelegateThrowsClause(package, throws);
out << sb;
out << nl << "IceInternal.Outgoing __og = __handler.getOutgoing(\"" << op->name() << "\", "
- << sliceModeToIceMode(op->sendMode()) << ", __ctx);";
+ << sliceModeToIceMode(op->sendMode()) << ", __ctx, __observer);";
out << nl << "try";
out << sb;
if(!inParams.empty())
@@ -5584,6 +5598,7 @@ Slice::Gen::DelegateDVisitor::visitClassDefStart(const ClassDefPtr& p)
out << sb;
string contextParam = "java.util.Map<String, String> __ctx";
+ string observerParam = "Ice.Instrumentation.InvocationObserver __observer";
OperationList ops = p->allOperations();
for(OperationList::iterator r = ops.begin(); r != ops.end(); ++r)
@@ -5620,7 +5635,7 @@ Slice::Gen::DelegateDVisitor::visitClassDefStart(const ClassDefPtr& p)
{
out << nl << "/** @deprecated **/";
}
- out << nl << "public " << retS << nl << opName << spar << params << contextParam << epar;
+ out << nl << "public " << retS << nl << opName << spar << params << contextParam << observerParam << epar;
writeDelegateThrowsClause(package, throws);
out << sb;
if(cl->hasMetaData("amd") || op->hasMetaData("amd"))