Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-4832

Default CodecRegistry isn't able to handle custom implementation of Number

    XMLWordPrintableJSON

Details

    • Icon: Question Question
    • Resolution: Gone away
    • Icon: Minor - P4 Minor - P4
    • None
    • None
    • Codecs
    • None

    Description

      Summary

      I am trying to load a JsonObject (part of the GSON library) that includes numbers. Gson outputs the numbers with the type "com.google.gson.internal.LazilyParsedNumber". Basically a class that extends Java's general Number class, that stores the loaded number as a String and parses it when needed. Now I am trying to execute an update with Gson's Number, however this leads to an error:

       

      
      

      _[23:52:26 WARN]: org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for CodecCacheKey{clazz=class com.google.gson.internal.LazilyParsedNumber, types=null}.
      [23:52:31 WARN]:        at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:74)
      [23:52:31 WARN]:        at org.bson.internal.ChildCodecRegistry.get(ChildCodecRegistry.java:67)
      [23:52:31 WARN]:        at com.mongodb.DBObjectCodec.writeValue(DBObjectCodec.java:248)
      [23:52:31 WARN]:        at com.mongodb.DBObjectCodec.encode(DBObjectCodec.java:159)
      [23:52:31 WARN]:        at com.mongodb.DBObjectCodec.encode(DBObjectCodec.java:67)
      [23:52:31 WARN]:        at org.bson.BsonDocumentWrapper.getUnwrapped(BsonDocumentWrapper.java:199)
      [23:52:31 WARN]:        at org.bson.BsonDocumentWrapper.entrySet(BsonDocumentWrapper.java:169)
      [23:52:31 WARN]:        at com.mongodb.client.model.Updates$CompositeUpdate.toBsonDocument(Updates.java:785)
      [23:52:31 WARN]:        at com.mongodb.client.model.BuildersHelper.encodeValue(BuildersHelper.java:34)
      [23:52:31 WARN]:        at com.mongodb.client.model.Updates$SimpleUpdate.toBsonDocument(Updates.java:511)
      [23:52:31 WARN]:        at com.mongodb.internal.operation.Operations.toBsonDocument(Operations.java:620)
      [23:52:31 WARN]:        at com.mongodb.internal.operation.Operations.bulkWrite(Operations.java:463)
      [23:52:31 WARN]:        at com.mongodb.internal.operation.Operations.updateOne(Operations.java:396)
      [23:52:31 WARN]:        at com.mongodb.internal.operation.SyncOperations.updateOne(SyncOperations.java:184)
      [23:52:31 WARN]:        at com.mongodb.client.internal.MongoCollectionImpl.executeUpdate(MongoCollectionImpl.java:1010)
      [23:52:31 WARN]:        at com.mongodb.client.internal.MongoCollectionImpl.updateOne(MongoCollectionImpl.java:584)
      [23:52:31 WARN]:        at storage.MongoDBStorage.lambda$savePlayerStats$2(MongoDBStorage.java:216)
      [23:52:31 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
      [23:52:31 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
      [23:52:31 WARN]:        at storage.StorageConnector$1.run(StorageConnector.java:46)_

       

       

      Please provide the version of the driver. If applicable, please provide the MongoDB server version and topology (standalone, replica set, or sharded cluster).

      Sync 4.8.1. Doesn't seem to be present with the latest (3.12.11) normal driver.

      How to Reproduce

       

      MongoCollection<Document> doc = ...;
      Number number = new Gson().fromJson("5", JsonPrimitive.class).getaAsNumber();
      // alternatively: directly initiating the type using new LazilyParsedNumber(5)
       
      // do some random operations with the given number
      doc.updateOne(Filters.eq("a", "b"), Updates.combine(new BasicDBObject("number", number));

       

       

      Additional Background

      Please provide any additional background information that may be helpful in diagnosing the bug.

      Attachments

        Activity

          People

            jeff.yemin@mongodb.com Jeffrey Yemin
            marcely1199@gmail.com ich mag
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: