2015-12-08 7 views
5

में चला गया है, वहां कई एपीआई हैं जो डेटास्टैक्स 3.x ड्राइवर में अब चली गई हैं। उनका उपयोग 'फ्रेमवर्क' स्तर ड्राइवर चालक वर्गों के लिए किया जाता था।डेटास्टैक्स जावा एपीआई को कॉल अपग्रेड करना जो 3

https://github.com/datastax/java-driver/tree/3.0/upgrade_guide

अपग्रेड मार्गदर्शिका कैसे हटा API को कॉल की जगह का कोई उदाहरण (है कि मैं के बारे में वैसे भी परवाह) प्रदान करता है। यहां कई ऐसे हैं जो गायब हैं और मैं अपना कोड अपग्रेड करने का प्रयास कर रहा हूं। कोई विचार जो उन्हें 'बदल दिया' है?

DataType.serialize(Object value, ProtocolVersion protocolVersion) 
DataType.deserialize(ByteBuffer bytes, ProtocolVersion protocolVersion) 
DataType.asJavaClass() 
DataType.Name.asJavaClass() 

कोई भी सहायता जिस पर एपीआई इन तरीकों से कॉल करती है, अब आविष्कार की जानी चाहिए।

+0

यह सवाल और कैसेंड्रा में प्रदान की जाती जवाब उपलब्ध होना चाहिए प्रलेखन उन्नयन प्रदान करता है। मैं एक ही समस्या की तलाश में था! धन्यवाद! – Philipp

उत्तर

3

आइटम # 2 कस्टम कोडेक्स के माध्यम से डेटाटाइप में परिवर्तनों का संदर्भ देता है। एक TypeCodec अब DataType से जुड़ा हुआ है क्योंकि ड्राइवर के 3.0 संस्करण में आप डेटा प्रकारों के लिए अपने कोडेक्स को परिभाषित कर सकते हैं। इसलिए इन विधियों को सीधे DataType के माध्यम से प्रदान नहीं किया जाता है।

कस्टम कोडेक्स (जावा -721) कई ब्रेकिंग परिवर्तन प्रस्तुत करते हैं और कुछ रनटाइम व्यवहार भी संशोधित करते हैं।

यहाँ तोड़ने एपीआई परिवर्तन की एक विस्तृत सूची है:

...

डेटा प्रकार TypeCodec करने के लिए कोई अधिक संदर्भ है, तो सबसे तरीकों कि क्रमबद्धता और डेटा प्रकारों का अक्रमांकन के साथ निपटा हटा दिया गया है:

  • ByteBuffer serialize (वस्तु मूल्य, ProtocolVersion protocolVersion)

  • वस्तु deseri एलीज़ (ByteBuffer बाइट्स, ProtocolVersion protocolVersion)

  • कक्षा asJavaClass()

Custom Codecs विवरण आप इसके लिए TypeCodec को हल करने का उपयोग करके पूरा करने के लिए सब कुछ की जरूरत है अगर आप DataType है की जरूरत है प्रदान करना चाहिए CodecRegistry.codecFor या TypeCodec डिफ़ॉल्ट कोडेक्स को हल करने के लिए स्थिर विधियां। TypeCodec तरीकों की जरूरत है, यानी .:

TypeCodec<Long> bigIntCodec = TypeCodec.bigint(); 
bigIntCodec.serialize(10L, protocolVersion); 
bigIntCodec.deserialize(bytes, protocolVersion); 
Class<?> clazz = bigIntCodec.getJavaType().getRawType(); 
+0

बहुत बहुत धन्यवाद, मुझे बहुत समय बचाया! – Philipp

संबंधित मुद्दे