2015-12-08 16 views
5

Nel driver Datastax 3.x sono disponibili numerose API. Sono stati usati per classi di wrapper driver di livello 'framework' che ho.Aggiornamento delle chiamate alle API Java Datastax non disponibili 3

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

La guida di aggiornamento non offre esempi di come sostituire le chiamate alle API rimosso (che mi interessa comunque). Qui ci sono molti che mancano e sto cercando di aggiornare il mio codice. Qualche idea su cosa li ha "rimpiazzati"?

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

Qualsiasi aiuto su cui le chiamate API a questi metodi devono ora essere richiamate sarebbe apprezzato.

+0

questa domanda e la risposta fornita dovrebbe essere disponibili nel Cassandra aggiornamento documentazione. Stavo cercando lo stesso problema! Grazie! – Philipp

risposta

3

L'articolo 2 fa riferimento alle modifiche a DataTypes tramite codec personalizzati. A TypeCodec non è più collegato a un DataType poiché nella versione 3.0 del driver è possibile definire i propri codec per i tipi di dati. Pertanto questi metodi non vengono più forniti direttamente tramite DataType.

I codec personalizzati (JAVA-721) introducono diverse interruzioni e modificano anche alcuni comportamenti di runtime.

Ecco un elenco dettagliato delle modifiche che si infrangono API:

...

tipo di dati non ha più riferimenti a TypeCodec, così maggior parte dei metodi che si occupava di serializzazione e deserializzazione di tipi di dati sono stati rimossi:

  • ByteBuffer serialize (Object value, ProtocolVersion ProtocolVersion)

  • oggetto Deseri Alize (byte ByteBuffer, ProtocolVersion ProtocolVersion)

  • Classe asJavaClass()

Il Custom Codecs dovrebbe fornire i dettagli necessari per raggiungere tutto il necessario se avete la DataType risolvendo il TypeCodec per utilizzando CodecRegistry.codecFor o i metodi statici TypeCodec per la risoluzione dei codec predefiniti. TypeCodec fornisce i metodi necessari, cioè .:

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

Grazie mille, mi ha risparmiato un sacco di tempo! – Philipp