[ 
https://issues.apache.org/jira/browse/GEODE-4269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16321066#comment-16321066
 ] 

ASF GitHub Bot commented on GEODE-4269:
---------------------------------------

pivotal-jbarrett closed pull request #184: GEODE-4269: Replaces magic casting 
readObject.
URL: https://github.com/apache/geode-native/pull/184
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/cppcache/include/geode/DataInput.hpp 
b/cppcache/include/geode/DataInput.hpp
index 33060b9a..513d3185 100644
--- a/cppcache/include/geode/DataInput.hpp
+++ b/cppcache/include/geode/DataInput.hpp
@@ -331,35 +331,6 @@ class _GEODE_EXPORT DataInput {
     return value;
   }
 
-  /**
-   * Read a <code>Serializable</code> object from the <code>DataInput</code>.
-   * Null objects are handled.
-   * This accepts an argument <code>throwOnError</code> that
-   * specifies whether to check the type dynamically and throw a
-   * <code>ClassCastException</code> when the cast fails.
-   *
-   * @param ptr The object to be read which is output by reference.
-   *            The type of this must match the type of object that
-   *            the application expects.
-   * @param throwOnError Throw a <code>ClassCastException</code> when
-   *                     the type of object does not match <code>ptr</code>.
-   *                     Default is true when <code>GF_DEBUG_ASSERTS</code>
-   *                     macro is set and false in normal case.
-   * @throws ClassCastException When <code>dynCast</code> fails
-   *                            for the given <code>ptr</code>.
-   * @see dynCast
-   * @see staticCast
-   */
-  template <class PTR>
-  inline std::shared_ptr<PTR> readObject(bool throwOnError = false) {
-    auto sPtr = readObjectInternal();
-    if (throwOnError) {
-      return std::dynamic_pointer_cast<PTR>(sPtr);
-    } else {
-      return std::static_pointer_cast<PTR>(sPtr);
-    }
-  }
-
   inline bool readNativeBool() {
     read();  // ignore type id
 
@@ -375,6 +346,15 @@ class _GEODE_EXPORT DataInput {
     return readObjectInternal(typeId);
   }
 
+  /**
+   * Read a Serializable object from the DataInput.
+   *
+   * @return Serializable object or <code>nullptr</code>.
+   */
+  inline std::shared_ptr<Serializable> readObject() {
+    return readObjectInternal();
+  }
+
   /**
    * Read a <code>Serializable</code> object from the <code>DataInput</code>.
    * Null objects are handled.
diff --git a/cppcache/include/geode/Serializer.hpp 
b/cppcache/include/geode/Serializer.hpp
index 1ebd425a..29952452 100644
--- a/cppcache/include/geode/Serializer.hpp
+++ b/cppcache/include/geode/Serializer.hpp
@@ -196,7 +196,7 @@ template <typename TObj,
                                   Serializable>::type* = nullptr>
 inline void readObject(apache::geode::client::DataInput& input,
                        std::shared_ptr<TObj>& value) {
-  value = input.readObject<TObj>(true);
+  value = std::static_pointer_cast<TObj>(input.readObject());
 }
 
 // For arrays
diff --git a/cppcache/src/CacheableObjectPartList.cpp 
b/cppcache/src/CacheableObjectPartList.cpp
index e69bbf72..eba1f861 100644
--- a/cppcache/src/CacheableObjectPartList.cpp
+++ b/cppcache/src/CacheableObjectPartList.cpp
@@ -42,7 +42,7 @@ void CacheableObjectPartList::fromData(DataInput& input) {
     int32_t keysOffset = (m_keysOffset != nullptr ? *m_keysOffset : 0);
     for (int32_t index = keysOffset; index < keysOffset + len; ++index) {
       if (hasKeys) {
-        key = input.readObject<CacheableKey>(true);
+        key = std::static_pointer_cast<CacheableKey>(input.readObject());
       } else if (m_keys != nullptr) {
         key = m_keys->operator[](index);
       } else {
diff --git a/cppcache/src/ClientProxyMembershipID.cpp 
b/cppcache/src/ClientProxyMembershipID.cpp
index f89d2618..642aa7e9 100644
--- a/cppcache/src/ClientProxyMembershipID.cpp
+++ b/cppcache/src/ClientProxyMembershipID.cpp
@@ -229,16 +229,17 @@ void ClientProxyMembershipID::fromData(DataInput& input) {
 
   input.readBytesOnly(hostAddr, len);  // inetaddress
   hostPort = input.readInt32();        // port
-  hostname = input.readObject<CacheableString>();  // hostname
+  hostname = std::static_pointer_cast<CacheableString>(input.readObject());
   splitbrain = input.read();                       // splitbrain
   dcport = input.readInt32();                      // port
   vPID = input.readInt32();                        // pid
   vmKind = input.read();                           // vmkind
   auto aStringArray = CacheableStringArray::create();
   aStringArray->fromData(input);
-  dsName = input.readObject<CacheableString>();           // name
-  uniqueTag = input.readObject<CacheableString>();        // unique tag
-  durableClientId = input.readObject<CacheableString>();  // durable client id
+  dsName = std::static_pointer_cast<CacheableString>(input.readObject());
+  uniqueTag = std::static_pointer_cast<CacheableString>(input.readObject());
+  durableClientId =
+      std::static_pointer_cast<CacheableString>(input.readObject());
   auto durableClntTimeOut = std::chrono::seconds(input.readInt32());  // 
durable client timeout
   int32_t vmViewId = 0;
   readVersion(splitbrain, input);
@@ -283,13 +284,13 @@ Serializable* 
ClientProxyMembershipID::readEssentialData(DataInput& input) {
   const auto vmKind = input.read();  // vmkind
 
   if (vmKind == ClientProxyMembershipID::LONER_DM_TYPE) {
-    uniqueTag = input.readObject<CacheableString>();  // unique tag
+    uniqueTag = std::static_pointer_cast<CacheableString>(input.readObject());
   } else {
-    vmViewIdstr = input.readObject<CacheableString>();
+    vmViewIdstr = 
std::static_pointer_cast<CacheableString>(input.readObject());
     vmViewId = atoi(vmViewIdstr.get()->value().c_str());
   }
 
-  dsName = input.readObject<CacheableString>();  // name
+  dsName = std::static_pointer_cast<CacheableString>(input.readObject());
 
   if (vmKind != ClientProxyMembershipID::LONER_DM_TYPE) {
     // initialize the object with the values read and some dummy values
diff --git a/cppcache/src/EnumInfo.cpp b/cppcache/src/EnumInfo.cpp
index 65960258..8cd907e3 100644
--- a/cppcache/src/EnumInfo.cpp
+++ b/cppcache/src/EnumInfo.cpp
@@ -74,8 +74,9 @@ void EnumInfo::toData(apache::geode::client::DataOutput 
&output) const {
 }
 
 void EnumInfo::fromData(apache::geode::client::DataInput &input) {
-  m_enumClassName = input.readObject<CacheableString>();
-  m_enumName = input.readObject<CacheableString>();
+  m_enumClassName =
+      std::static_pointer_cast<CacheableString>(input.readObject());
+  m_enumName = std::static_pointer_cast<CacheableString>(input.readObject());
   m_ordinal = input.readInt32();
 }
 
diff --git a/cppcache/src/FarSideEntryOp.cpp b/cppcache/src/FarSideEntryOp.cpp
index 6596b68f..d26507b4 100644
--- a/cppcache/src/FarSideEntryOp.cpp
+++ b/cppcache/src/FarSideEntryOp.cpp
@@ -53,7 +53,7 @@ bool FarSideEntryOp::isInvalidate(int8_t op) {
 
 void FarSideEntryOp::fromData(DataInput& input, bool largeModCount,
                               uint16_t memId) {
-  m_key = input.readObject<CacheableKey>();
+  m_key = std::static_pointer_cast<CacheableString>(input.readObject());
   m_op = input.read();
   if (largeModCount) {
     m_modSerialNum = input.readInt32();
diff --git a/cppcache/src/GetAllServersRequest.cpp 
b/cppcache/src/GetAllServersRequest.cpp
index 5d4b2bf3..0f071ff4 100644
--- a/cppcache/src/GetAllServersRequest.cpp
+++ b/cppcache/src/GetAllServersRequest.cpp
@@ -24,5 +24,5 @@ void GetAllServersRequest::toData(DataOutput& output) const {
 }
 
 void GetAllServersRequest::fromData(DataInput& input) {
-  m_serverGroup = input.readObject<CacheableString>();
+  m_serverGroup = 
std::static_pointer_cast<CacheableString>(input.readObject());
 }
diff --git a/cppcache/src/PdxLocalReader.cpp b/cppcache/src/PdxLocalReader.cpp
index e2420e00..2165e31a 100644
--- a/cppcache/src/PdxLocalReader.cpp
+++ b/cppcache/src/PdxLocalReader.cpp
@@ -302,7 +302,8 @@ bool PdxLocalReader::isIdentityField(const std::string& 
fieldName) {
 void PdxLocalReader::readCollection(
     const std::string& fieldName,
     std::shared_ptr<CacheableArrayList>& collection) {
-  collection = m_dataInput->readObject<CacheableArrayList>();
+  collection =
+      std::static_pointer_cast<CacheableArrayList>(m_dataInput->readObject());
 }
 std::shared_ptr<PdxUnreadFields> PdxLocalReader::readUnreadFields() {
   LOGDEBUG("readUnreadFields:: %d ignore property %d", m_isDataNeedToPreserve,
diff --git a/cppcache/src/Properties.cpp b/cppcache/src/Properties.cpp
index 1c627727..43d2ec59 100644
--- a/cppcache/src/Properties.cpp
+++ b/cppcache/src/Properties.cpp
@@ -273,8 +273,8 @@ void Properties::toData(DataOutput& output) const {
 void Properties::fromData(DataInput& input) {
   int32_t mapSize = input.readArrayLen();
   for (int i = 0; i < mapSize; i++) {
-    auto key = input.readObject<CacheableKey>(true);
-    auto val = input.readObject<Cacheable>(true);
+    auto key = std::static_pointer_cast<CacheableKey>(input.readObject());
+    auto val = std::static_pointer_cast<Cacheable>(input.readObject());
     MAP->rebind(key, val);
   }
 }
diff --git a/cppcache/src/RegionAttributes.cpp 
b/cppcache/src/RegionAttributes.cpp
index 56352a44..c77477dc 100644
--- a/cppcache/src/RegionAttributes.cpp
+++ b/cppcache/src/RegionAttributes.cpp
@@ -375,7 +375,8 @@ void RegionAttributes::fromData(DataInput& in) {
   apache::geode::client::impl::readString(in, m_endpoints);
   apache::geode::client::impl::readString(in, m_persistenceLibrary);
   apache::geode::client::impl::readString(in, m_persistenceFactory);
-  m_persistenceProperties = in.readObject<Properties>(true);
+  m_persistenceProperties =
+      std::static_pointer_cast<Properties>(in.readObject());
   apache::geode::client::impl::readString(in, m_poolName);
   apache::geode::client::impl::readBool(in, &m_isConcurrencyChecksEnabled);
 }
diff --git a/cppcache/src/RegionCommit.cpp b/cppcache/src/RegionCommit.cpp
index 25cba9a4..fcf68a7f 100644
--- a/cppcache/src/RegionCommit.cpp
+++ b/cppcache/src/RegionCommit.cpp
@@ -28,13 +28,14 @@ namespace geode {
 namespace client {
 
 void RegionCommit::fromData(DataInput& input) {
-  m_regionPath = input.readObject<CacheableString>();
-  m_parentRegionPath = input.readObject<CacheableString>();
+  m_regionPath = std::static_pointer_cast<CacheableString>(input.readObject());
+  m_parentRegionPath =
+      std::static_pointer_cast<CacheableString>(input.readObject());
   int32_t size = input.readInt32();
   if (size > 0) {
     const auto largeModCount = input.readBoolean();
-    std::shared_ptr<DSMemberForVersionStamp> dsMember;
-    dsMember = input.readObject<DSMemberForVersionStamp>();
+    auto dsMember =
+        std::static_pointer_cast<DSMemberForVersionStamp>(input.readObject());
 
     auto memId = m_memberListForVersionStamp.add(dsMember);
     for (int i = 0; i < size; i++) {
diff --git a/cppcache/src/TcrConnection.cpp b/cppcache/src/TcrConnection.cpp
index a29666e7..6c653e17 100644
--- a/cppcache/src/TcrConnection.cpp
+++ b/cppcache/src/TcrConnection.cpp
@@ -448,8 +448,8 @@ bool TcrConnection::InitTcrConnection(
         auto diForClient = cacheImpl->createDataInput(
             reinterpret_cast<const uint8_t*>(recvMessage->value()),
             recvMessage->length());
-        std::shared_ptr<ClientProxyMembershipID> member;
-        member = diForClient->readObject<ClientProxyMembershipID>();
+        auto member = std::static_pointer_cast<ClientProxyMembershipID>(
+            diForClient->readObject());
         auto memId = cacheImpl->getMemberListForVersionStamp()->add(member);
         getEndpointObject()->setDistributedMemberID(memId);
         LOGDEBUG("Deserialized distributed member Id %d", memId);
diff --git a/cppcache/src/TcrMessage.cpp b/cppcache/src/TcrMessage.cpp
index 8c7e94c7..a3aba11c 100644
--- a/cppcache/src/TcrMessage.cpp
+++ b/cppcache/src/TcrMessage.cpp
@@ -369,7 +369,7 @@ inline void TcrMessage::readKeyPart(DataInput& input) {
   const auto isObj = input.readBoolean();
   if (lenObj > 0) {
     if (isObj) {
-      m_key = input.readObject<CacheableKey>();
+      m_key = std::static_pointer_cast<CacheableKey>(input.readObject());
     } else {
       m_key = std::static_pointer_cast<CacheableKey>(
           readCacheableString(input, lenObj));
@@ -2914,7 +2914,7 @@ void TcrMessage::readEventIdPart(DataInput& input, bool 
skip, int32_t parts) {
 
   GF_D_ASSERT(isObj != 0);
 
-  m_eventid = input.readObject<EventId>();
+  m_eventid = std::static_pointer_cast<EventId>(input.readObject());
 }
  std::shared_ptr<DSMemberForVersionStamp> TcrMessage::readDSMember(
     apache::geode::client::DataInput& input) {
@@ -2979,7 +2979,8 @@ void TcrMessage::readHashMapForGCVersions(
 }
 
 void TcrMessage::readHashSetForGCVersions(
-    apache::geode::client::DataInput& input, 
std::shared_ptr<CacheableHashSet>& value) {
+    apache::geode::client::DataInput& input,
+    std::shared_ptr<CacheableHashSet>& value) {
   uint8_t hashsettypeid = input.read();
   if (hashsettypeid != GeodeTypeIds::CacheableHashSet) {
     throw Exception(
@@ -2991,7 +2992,7 @@ void TcrMessage::readHashSetForGCVersions(
     std::shared_ptr<CacheableKey> key;
     std::shared_ptr<Cacheable> val;
     for (int32_t index = 0; index < len; index++) {
-      auto keyPtr = input.readObject<CacheableKey>();
+      auto keyPtr = std::static_pointer_cast<CacheableKey>(input.readObject());
       value->insert(keyPtr);
     }
   }
diff --git a/cppcache/src/ThinClientLocatorHelper.cpp 
b/cppcache/src/ThinClientLocatorHelper.cpp
index 104abe7f..5f94f8f3 100644
--- a/cppcache/src/ThinClientLocatorHelper.cpp
+++ b/cppcache/src/ThinClientLocatorHelper.cpp
@@ -124,7 +124,6 @@ GfErrType ThinClientLocatorHelper::getAllServers(
 
       auto di = 
m_poolDM->getConnectionManager().getCacheImpl()->createDataInput(
                    reinterpret_cast<uint8_t*>(buff), receivedLength);
-      std::shared_ptr<GetAllServersResponse> response(nullptr);
 
       /* adongre
        * SSL Enabled on Location and not in the client
@@ -136,7 +135,8 @@ GfErrType ThinClientLocatorHelper::getAllServers(
       }
       di->rewindCursor(1);
 
-      response = di->readObject<GetAllServersResponse>();
+      auto response =
+          std::static_pointer_cast<GetAllServersResponse>(di->readObject());
       servers = response->getServers();
       return GF_NOERR;
     } catch (const AuthenticationRequiredException&) {
@@ -215,7 +215,6 @@ GfErrType 
ThinClientLocatorHelper::getEndpointForNewCallBackConn(
       }
       auto di = 
m_poolDM->getConnectionManager().getCacheImpl()->createDataInput(
                    reinterpret_cast<uint8_t*>(buff), receivedLength);
-      std::shared_ptr<QueueConnectionResponse> response(nullptr);
 
       /* adongre
        * ssl defect
@@ -227,7 +226,8 @@ GfErrType 
ThinClientLocatorHelper::getEndpointForNewCallBackConn(
             "SSL is enabled on locator, enable SSL in client as well");
       }
       di->rewindCursor(1);
-      response = di->readObject<QueueConnectionResponse>();
+      auto response =
+          std::static_pointer_cast<QueueConnectionResponse>(di->readObject());
       outEndpoint = response->getServers();
       return GF_NOERR;
     } catch (const AuthenticationRequiredException& excp) {
@@ -316,7 +316,6 @@ GfErrType ThinClientLocatorHelper::getEndpointForNewFwdConn(
       }
       auto di = 
m_poolDM->getConnectionManager().getCacheImpl()->createDataInput(
                    reinterpret_cast<uint8_t*>(buff), receivedLength);
-      std::shared_ptr<ClientConnectionResponse> response;
 
       /* adongre
        * SSL is enabled on locator and not in the client
@@ -329,7 +328,8 @@ GfErrType ThinClientLocatorHelper::getEndpointForNewFwdConn(
       }
       di->rewindCursor(1);
 
-      response = di->readObject<ClientConnectionResponse>();
+      auto response =
+          std::static_pointer_cast<ClientConnectionResponse>(di->readObject());
       response->printInfo();
       if (!response->serverFound()) {
         LOGFINE("Server not found");
@@ -407,7 +407,6 @@ GfErrType ThinClientLocatorHelper::updateLocators(
                     .getCacheImpl()
                     ->createDataInput(reinterpret_cast<uint8_t*>(buff),
                                       receivedLength);
-      auto response = std::make_shared<LocatorListResponse>();
 
       /* adongre
        * SSL Enabled on Location and not in the client
@@ -420,7 +419,8 @@ GfErrType ThinClientLocatorHelper::updateLocators(
       }
       di->rewindCursor(1);
 
-      response = di->readObject<LocatorListResponse>();
+      auto response =
+          std::static_pointer_cast<LocatorListResponse>(di->readObject());
       auto locators = response->getLocators();
       if (locators.size() > 0) {
         RandGen randGen;
diff --git a/cppcache/src/ThinClientRegion.cpp 
b/cppcache/src/ThinClientRegion.cpp
index 6efa02cb..b17a54ba 100644
--- a/cppcache/src/ThinClientRegion.cpp
+++ b/cppcache/src/ThinClientRegion.cpp
@@ -3469,7 +3469,7 @@ void ChunkedQueryResponse::handleChunk(const uint8_t* 
chunk, int32_t chunkLen,
     // special case for scalar result
     partLen = input->readInt32();
     input->read();
-    auto intVal = input->readObject<CacheableInt32>(true);
+    auto intVal = 
std::static_pointer_cast<CacheableInt32>(input->readObject());
     m_queryResults->push_back(intVal);
 
     // TODO:
@@ -3925,7 +3925,8 @@ void ChunkedDurableCQListResponse::handleChunk(const 
uint8_t* chunk,
                       // is one byte
 
   for (int i = 0; i < stringParts; i++) {
-    m_resultList->push_back(input->readObject<CacheableString>());
+    m_resultList->push_back(
+        std::static_pointer_cast<CacheableString>(input->readObject()));
   }
 }
 
diff --git a/cppcache/src/VersionedCacheableObjectPartList.cpp 
b/cppcache/src/VersionedCacheableObjectPartList.cpp
index bf367eb6..1b83f6ee 100644
--- a/cppcache/src/VersionedCacheableObjectPartList.cpp
+++ b/cppcache/src/VersionedCacheableObjectPartList.cpp
@@ -118,7 +118,7 @@ void VersionedCacheableObjectPartList::fromData(DataInput& 
input) {
     len = static_cast<int32_t>(input.readUnsignedVL());
 
     for (int32_t index = 0; index < len; ++index) {
-      auto key = input.readObject<CacheableKey>(true);
+      auto key = std::static_pointer_cast<CacheableKey>(input.readObject());
       if (m_resultKeys != nullptr) {
         m_resultKeys->push_back(key);
       }
diff --git a/cppcache/test/DataInputTest.cpp b/cppcache/test/DataInputTest.cpp
index 8e4d994d..3d3594bf 100644
--- a/cppcache/test/DataInputTest.cpp
+++ b/cppcache/test/DataInputTest.cpp
@@ -104,11 +104,6 @@ class TestDataInput {
 
   double readDouble() { return m_dataInput.readDouble(); }
 
-  template <class PTR>
-  void readObject(std::shared_ptr<PTR> &ptr, bool throwOnError = false) {
-    ptr = m_dataInput.readObject<PTR>(throwOnError);
-  }
-
   bool readNativeBool() { return m_dataInput.readNativeBool(); }
 
   int32_t readNativeInt32() { return m_dataInput.readNativeInt32(); }
@@ -117,6 +112,10 @@ class TestDataInput {
     return m_dataInput.readDirectObject(typeId);
   }
 
+  std::shared_ptr<Serializable> readObject() {
+    return m_dataInput.readObject();
+  }
+
   void readObject(std::shared_ptr<Serializable> &ptr) {
     m_dataInput.readObject(ptr);
   }
@@ -478,8 +477,8 @@ TEST_F(DataInputTest, TestReadUTFNarrow) {
 TEST_F(DataInputTest, TestReadObjectSharedPtr) {
   TestDataInput dataInput(
       "57001B596F7520686164206D65206174206D65617420746F726E61646F2E");
-  std::shared_ptr<CacheableString> objptr;
-  dataInput.readObject(objptr);
+  auto objptr =
+      std::static_pointer_cast<CacheableString>(dataInput.readObject());
   EXPECT_EQ("You had me at meat tornado.", objptr->value())
       << "Correct const char *";
 }
diff --git a/tests/cpp/testobject/BatchObject.cpp 
b/tests/cpp/testobject/BatchObject.cpp
index 256f4a9e..0d1ed289 100644
--- a/tests/cpp/testobject/BatchObject.cpp
+++ b/tests/cpp/testobject/BatchObject.cpp
@@ -44,7 +44,7 @@ void BatchObject::fromData(apache::geode::client::DataInput& 
input) {
   index = input.readInt32();
   timestamp = input.readInt64();
   batch = input.readInt32();
-  byteArray = input.readObject<CacheableBytes>();
+  byteArray = std::static_pointer_cast<CacheableBytes>(input.readObject());
 }
 std::string BatchObject::toString() const {
   char buf[102500];
diff --git a/tests/cpp/testobject/DeltaFastAssetAccount.cpp 
b/tests/cpp/testobject/DeltaFastAssetAccount.cpp
index 9903782b..4f59701e 100644
--- a/tests/cpp/testobject/DeltaFastAssetAccount.cpp
+++ b/tests/cpp/testobject/DeltaFastAssetAccount.cpp
@@ -54,9 +54,9 @@ void DeltaFastAssetAccount::toData(
 
 void DeltaFastAssetAccount::fromData(apache::geode::client::DataInput& input) {
   acctId = input.readInt32();
-  customerName = input.readObject<CacheableString>();
+  customerName = std::static_pointer_cast<CacheableString>(input.readObject());
   netWorth = input.readDouble();
-  assets = input.readObject<CacheableHashMap>();
+  assets = std::static_pointer_cast<CacheableHashMap>(input.readObject());
   timestamp = input.readInt64();
 }
 
diff --git a/tests/cpp/testobject/DeltaPSTObject.cpp 
b/tests/cpp/testobject/DeltaPSTObject.cpp
index 38bb63ce..e4e15628 100644
--- a/tests/cpp/testobject/DeltaPSTObject.cpp
+++ b/tests/cpp/testobject/DeltaPSTObject.cpp
@@ -61,7 +61,7 @@ void 
DeltaPSTObject::fromData(apache::geode::client::DataInput& input) {
   timestamp = input.readInt64();
   field1 = input.readInt32();
   field2 = input.read();
-  valueData = input.readObject<CacheableBytes>();
+  valueData = std::static_pointer_cast<CacheableBytes>(input.readObject());
 }
 std::string DeltaPSTObject::toString() const {
   char buf[102500];
diff --git a/tests/cpp/testobject/DeltaTestImpl.cpp 
b/tests/cpp/testobject/DeltaTestImpl.cpp
index e157e720..c656931e 100644
--- a/tests/cpp/testobject/DeltaTestImpl.cpp
+++ b/tests/cpp/testobject/DeltaTestImpl.cpp
@@ -68,10 +68,10 @@ DeltaTestImpl::DeltaTestImpl(const DeltaTestImpl& rhs) : 
Delta(nullptr) {
 
 void DeltaTestImpl::fromData(DataInput& input) {
   intVar = input.readInt32();
-  str = input.readObject<CacheableString>();
+  str = std::static_pointer_cast<CacheableString>(input.readObject());
   doubleVar = input.readDouble();
-  byteArr = input.readObject<CacheableBytes>();
-  testObj = input.readObject<TestObject1>();
+  byteArr = std::static_pointer_cast<CacheableBytes>(input.readObject());
+  testObj = std::static_pointer_cast<TestObject1>(input.readObject());
 }
 
 void DeltaTestImpl::toData(DataOutput& output) const {
@@ -117,13 +117,13 @@ void DeltaTestImpl::fromDelta(DataInput& input) {
     intVar = input.readInt32();
   }
   if ((deltaBits & STR_MASK) == STR_MASK) {
-    str = input.readObject<CacheableString>();
+    str = std::static_pointer_cast<CacheableString>(input.readObject());
   }
   if ((deltaBits & DOUBLE_MASK) == DOUBLE_MASK) {
     doubleVar = input.readDouble();
   }
   if ((deltaBits & BYTE_ARR_MASK) == BYTE_ARR_MASK) {
-    byteArr = input.readObject<CacheableBytes>();
+    byteArr = std::static_pointer_cast<CacheableBytes>(input.readObject());
     /*
         uint8_t* bytes;
         int32_t len;
@@ -133,7 +133,7 @@ void DeltaTestImpl::fromDelta(DataInput& input) {
     */
   }
   if ((deltaBits & TEST_OBJ_MASK) == TEST_OBJ_MASK) {
-    testObj = input.readObject<TestObject1>();
+    testObj = std::static_pointer_cast<TestObject1>(input.readObject());
   }
 }
 
diff --git a/tests/cpp/testobject/FastAssetAccount.cpp 
b/tests/cpp/testobject/FastAssetAccount.cpp
index 56e54451..693afa99 100644
--- a/tests/cpp/testobject/FastAssetAccount.cpp
+++ b/tests/cpp/testobject/FastAssetAccount.cpp
@@ -59,9 +59,9 @@ void 
FastAssetAccount::toData(apache::geode::client::DataOutput& output) const {
 
 void FastAssetAccount::fromData(apache::geode::client::DataInput& input) {
   acctId = input.readInt32();
-  customerName = input.readObject<CacheableString>();
+  customerName = std::static_pointer_cast<CacheableString>(input.readObject());
   netWorth = input.readDouble();
-  assets = input.readObject<CacheableHashMap>();
+  assets = std::static_pointer_cast<CacheableHashMap>(input.readObject());
   timestamp = input.readInt64();
 }
 
diff --git a/tests/cpp/testobject/PSTObject.cpp 
b/tests/cpp/testobject/PSTObject.cpp
index 6477a00f..ffb9a8f5 100644
--- a/tests/cpp/testobject/PSTObject.cpp
+++ b/tests/cpp/testobject/PSTObject.cpp
@@ -52,7 +52,7 @@ void PSTObject::fromData(apache::geode::client::DataInput& 
input) {
   timestamp = input.readInt64();
   field1 = input.readInt32();
   field2 = input.read();
-  valueData = input.readObject<CacheableBytes>();
+  valueData = std::static_pointer_cast<CacheableBytes>(input.readObject());
 }
 std::string PSTObject::toString() const {
   char buf[102500];
diff --git a/tests/cpp/testobject/Portfolio.cpp 
b/tests/cpp/testobject/Portfolio.cpp
index 2a506996..6f0c9cec 100644
--- a/tests/cpp/testobject/Portfolio.cpp
+++ b/tests/cpp/testobject/Portfolio.cpp
@@ -78,15 +78,15 @@ void Portfolio::toData(DataOutput& output) const {
 
 void Portfolio::fromData(DataInput& input) {
   ID = input.readInt32();
-  pkid = input.readObject<CacheableString>();
-  position1 = input.readObject<Position>();
-  position2 = input.readObject<Position>();
-  positions = input.readObject<CacheableHashMap>();
-  type = input.readObject<CacheableString>();
+  pkid = std::static_pointer_cast<CacheableString>(input.readObject());
+  position1 = std::static_pointer_cast<Position>(input.readObject());
+  position2 = std::static_pointer_cast<Position>(input.readObject());
+  positions = std::static_pointer_cast<CacheableHashMap>(input.readObject());
+  type = std::static_pointer_cast<CacheableString>(input.readObject());
   status = input.readUTF();
-  names = input.readObject<CacheableStringArray>();
+  names = std::static_pointer_cast<CacheableStringArray>(input.readObject());
   input.readBytes(&newVal, &newValSize);
-  creationDate = input.readObject<CacheableDate>();
+  creationDate = std::static_pointer_cast<CacheableDate>(input.readObject());
   int tmp = 0;
   input.readBytes(&arrayNull, &tmp);
   input.readBytes(&arrayZeroSize, &tmp);
diff --git a/tests/cpp/testobject/Position.cpp 
b/tests/cpp/testobject/Position.cpp
index 6f4182f4..7df8c2c9 100644
--- a/tests/cpp/testobject/Position.cpp
+++ b/tests/cpp/testobject/Position.cpp
@@ -97,19 +97,19 @@ void Position::toData(apache::geode::client::DataOutput& 
output) const {
 
 void Position::fromData(apache::geode::client::DataInput& input) {
   avg20DaysVol = input.readInt64();
-  bondRating = input.readObject<CacheableString>();
+  bondRating = std::static_pointer_cast<CacheableString>(input.readObject());
   convRatio = input.readDouble();
-  country = input.readObject<CacheableString>();
+  country = std::static_pointer_cast<CacheableString>(input.readObject());
   delta = input.readDouble();
   industry = input.readInt64();
   issuer = input.readInt64();
   mktValue = input.readDouble();
   qty = input.readDouble();
-  secId = input.readObject<CacheableString>();
-  secLinks = input.readObject<CacheableString>();
+  secId = std::static_pointer_cast<CacheableString>(input.readObject());
+  secLinks = std::static_pointer_cast<CacheableString>(input.readObject());
   secType = input.readUTF<wchar_t>();
   sharesOutstanding = input.readInt32();
-  underlyer = input.readObject<CacheableString>();
+  underlyer = std::static_pointer_cast<CacheableString>(input.readObject());
   volatility = input.readInt64();
   pid = input.readInt32();
 }
diff --git a/tests/cpp/testobject/TestObject1.cpp 
b/tests/cpp/testobject/TestObject1.cpp
index 77f57911..bd20902f 100644
--- a/tests/cpp/testobject/TestObject1.cpp
+++ b/tests/cpp/testobject/TestObject1.cpp
@@ -60,7 +60,7 @@ void TestObject1::fromData(DataInput& input) {
   input.readBytes(&bytes, &len);
   arr = CacheableBytes::create(bytes, len);
   delete bytes;
-  name = input.readObject<CacheableString>();
+  name = std::static_pointer_cast<CacheableString>(input.readObject());
   identifier = input.readInt32();
 }
 
diff --git a/tests/cpp/testobject/VariousPdxTypes.cpp 
b/tests/cpp/testobject/VariousPdxTypes.cpp
index 841eb172..432423ca 100644
--- a/tests/cpp/testobject/VariousPdxTypes.cpp
+++ b/tests/cpp/testobject/VariousPdxTypes.cpp
@@ -894,11 +894,11 @@ void PdxInsideIGeodeSerializable::toData(DataOutput 
&output) const {
 
 void PdxInsideIGeodeSerializable::fromData(DataInput &input) {
   m_i1 = input.readInt32();
-  m_npdx = input.readObject<NestedPdx>();
+  m_npdx = std::static_pointer_cast<NestedPdx>(input.readObject());
   m_i2 = input.readInt32();
   m_s1 = input.readString();
   m_s2 = input.readString();
-  m_pdx3 = input.readObject<PdxTypes3>();
+  m_pdx3 = std::static_pointer_cast<PdxTypes3>(input.readObject());
   m_i3 = input.readInt32();
   m_i4 = input.readInt32();
 }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Remove DataInput::readObject(bool) which auto casts with boolean flag.
> ----------------------------------------------------------------------
>
>                 Key: GEODE-4269
>                 URL: https://issues.apache.org/jira/browse/GEODE-4269
>             Project: Geode
>          Issue Type: Improvement
>          Components: native client
>            Reporter: Jacob S. Barrett
>            Assignee: Jacob S. Barrett
>
> Remove DataInput::readObject(bool) which auto casts with boolean flag. The 
> ambiguity of the casting could lead to bad programming habits. Return the 
> original object and let the caller cast using the appropriate methods.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to