2015-12-08 5 views
5

Es gibt eine Reihe von APIs, die jetzt im Datastax 3.x-Treiber fehlen. Sie wurden verwendet, um Wrapper-Klassen auf Framework-Ebene zu erstellen, die ich habe.Aktualisieren von Aufrufen an Datastax-Java-APIs, die nicht mehr vorhanden sind 3

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

Die Upgrade-Anleitung bietet keine Beispiele dafür, wie Anrufe an die entfernten APIs ersetzen (das ich sowieso egal). Hier sind einige, die fehlen und ich versuche, meinen Code zu aktualisieren. Irgendwelche Ideen, was hat sie "ersetzt"?

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

Jede Hilfe, auf die APIs Aufrufe dieser Methoden jetzt aufgerufen werden sollten, wäre willkommen.

+0

Diese Fragen und die bereitgestellte Antwort sollte in der Cassandra Upgrade-Dokumentation zur Verfügung. Ich war auf der Suche nach dem gleichen Problem! Vielen Dank! – Philipp

Antwort

3

Element # 2 verweist auf die Änderungen an DataTypes über benutzerdefinierte Codecs. A TypeCodec ist nicht mehr an eine DataType angeschlossen, da Sie in der Version 3.0 des Treibers eigene Codecs für Datentypen definieren können. Daher werden diese Methoden nicht mehr direkt über DataType bereitgestellt.

Benutzerdefinierte Codecs (JAVA-721) führen einige Änderungen ein und ändern auch einige Laufzeitverhalten.

Hier eine detaillierte Liste der Bruch API-Änderungen ist:

...

Datentyp nicht mehr Verweise auf TypeCodec hat, so dass die meisten Methoden, die mit Serialisierung und Deserialisierung von Datentypen behandelt wurden entfernt:

  • ByteBuffer Serialisieren (Objektwert, Protocolprotocol)

  • Object deseri alize (ByteBuffer Bytes, Protocolprotocol)

  • Klasse asJavaClass()

Die Custom Codecs sollten die Details, die Sie benötigen, bieten alles, was erforderlich, um zu erreichen, wenn Sie die DataType haben durch die TypeCodec für ihn zu lösen verwenden CodecRegistry.codecFor oder die TypeCodec statische Methoden zum Auflösen der Standard-Codecs. TypeCodec liefert die Methoden, die Sie benötigen, d.h .:

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

Vielen Dank, rettete mir viel Zeit! – Philipp

Verwandte Themen