summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ProxyFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/ProxyFactory.cpp')
-rw-r--r--cpp/src/Ice/ProxyFactory.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/cpp/src/Ice/ProxyFactory.cpp b/cpp/src/Ice/ProxyFactory.cpp
index 2e55df12ce1..11bd899fd20 100644
--- a/cpp/src/Ice/ProxyFactory.cpp
+++ b/cpp/src/Ice/ProxyFactory.cpp
@@ -29,7 +29,7 @@ IceUtil::Shared* IceInternal::upCast(ProxyFactory* p) { return p; }
ObjectPrx
IceInternal::ProxyFactory::stringToProxy(const string& str) const
{
- ReferencePtr ref = _instance->referenceFactory()->create(str);
+ ReferencePtr ref = _instance->referenceFactory()->create(str, "");
return referenceToProxy(ref);
}
@@ -49,7 +49,8 @@ IceInternal::ProxyFactory::proxyToString(const ObjectPrx& proxy) const
ObjectPrx
IceInternal::ProxyFactory::propertyToProxy(const string& prefix) const
{
- ReferencePtr ref = _instance->referenceFactory()->createFromProperties(prefix);
+ string proxy = _instance->initializationData().properties->getProperty(prefix);
+ ReferencePtr ref = _instance->referenceFactory()->create(proxy, prefix);
return referenceToProxy(ref);
}
@@ -114,13 +115,13 @@ IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex, co
if(one)
{
LocatorInfoPtr li = ref->getLocatorInfo();
- if(li)
+ if(li && ref->isIndirect())
{
//
// We retry ObjectNotExistException if the reference is
// indirect.
//
- li->clearObjectCache(IndirectReferencePtr::dynamicCast(ref));
+ li->clearObjectCache(ref);
}
else if(ref->getRouterInfo() && one->operation == "ice_add_proxy")
{