2015-12-08 13 views
5

Có một số API hiện đã mất trong trình điều khiển Datastax 3.x. Chúng được sử dụng để làm các lớp trình bao bọc trình điều khiển cấp 'khung' tôi có.Nâng cấp các cuộc gọi tới API Java của Datastax đã biến mất trong 3

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

Hướng dẫn nâng cấp không cung cấp ví dụ về làm thế nào để thay thế các cuộc gọi đến các API gỡ bỏ (mà tôi quan tâm đến anyway). Dưới đây là một số điều bị thiếu và tôi đang cố gắng nâng cấp mã của mình. Bất kỳ ý tưởng gì đã 'thay thế' chúng?

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

Bất kỳ trợ giúp nào mà API gọi tới các phương thức này giờ đây sẽ được gọi sẽ được đánh giá cao.

+0

này câu hỏi và câu trả lời cung cấp nên có sẵn trong Cassandra nâng cấp tài liệu hướng dẫn. Tôi đang tìm kiếm cùng một vấn đề! Cảm ơn! – Philipp

Trả lời

3

Mục số 2 tham chiếu các thay đổi đối với DataTypes qua codec tùy chỉnh. A TypeCodec không còn được đính kèm với số DataType vì trong phiên bản 3.0 của trình điều khiển, bạn có thể xác định codec của riêng bạn cho các loại dữ liệu. Do đó, các phương pháp này không còn được cung cấp trực tiếp qua số DataType.

codec tùy chỉnh (JAVA-721) giới thiệu một số thay đổi đột phá và cũng sửa đổi một vài hành vi thời gian chạy.

Đây là danh sách chi tiết các thay đổi phá vỡ API:

...

DataType không có nhiều tài liệu tham khảo để TypeCodec, vì vậy hầu hết các phương pháp xử lý serialization và deserialization của các kiểu dữ liệu đã được loại bỏ:

  • ByteBuffer serialize (giá trị Object, protocolVersion protocolVersion)

  • Object deseri Alize (ByteBuffer byte, ProtocolVersion protocolVersion)

  • Lớp asJavaClass()

Các Custom Codecs nên cung cấp các chi tiết cần thiết để hoàn thành tất cả mọi thứ cần thiết nếu bạn có DataType bằng cách giải quyết các TypeCodec cho nó sử dụng CodecRegistry.codecFor hoặc TypeCodec phương pháp tĩnh để giải quyết các codec mặc định. TypeCodec cung cấp những phương pháp bạn cần, tức là .:

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

Cảm ơn rất nhiều, đã cứu tôi rất nhiều thời gian! – Philipp

Các vấn đề liên quan