2015-12-08 6 views
5

Datastax 3.xドライバには現在いくつかのAPIがあります。彼らは私が持っている 'フレームワーク'レベルのドライバラッパークラスを行うために使われました。3で行ったDatastax Java APIへの呼び出しをアップグレードする

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() 

これらのメソッドを呼び出すAPIが呼び出される必要があります。

+0

:すなわち、必要なメソッドを提供し、提供答えがドキュメントを更新カサンドラに利用可能であるべきです。私は同じ問題を探していた!ありがとう! – Philipp

答えて

3

アイテム#2は、カスタムコーデックを使用してDataTypesへの変更を参照します。 TypeCodecは、3.03バージョンのドライバではデータ型用に独自のコーデックを定義できるため、DataTypeには追加されなくなりました。したがって、これらの方法は、DataTypeを介して直接提供されなくなりました。

カスタムコーデック(JAVA-721)はいくつかの急な変更を導入し、いくつかのランタイム動作も変更します。ここで

は、APIの変更を壊すの詳細なリストである:

...データ型のシリアライズとデシリアライズに対処ほとんどのメソッドが削除されているので、

データ型は、TypeCodecへのこれ以上の言及がありません。

  • のByteBufferのシリアライズ(Object値、はprotocolVersionはprotocolVersion)

  • オブジェクトdeseriアリゼ(ByteBufferのバイトはprotocolVersionはprotocolVersion)

  • クラスasJavaClass()

あなたが使用してそれをTypeCodecを解決することによって、DataTypeを持っている場合Custom Codecsはあなたが必要なすべてを達成するために必要な詳細情報を提供する必要がありますCodecRegistry.codecForまたはTypeCodecデフォルトコーデックを解決するための静的メソッド。 TypeCodecこの質問は

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

ありがとう、私に多くの時間を節約! – Philipp

関連する問題