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

@BsonIgnore doesn't work how it needs to be...

    XMLWordPrintableJSON

Details

    • Icon: Question Question
    • Resolution: Gone away
    • Icon: Major - P3 Major - P3
    • None
    • None
    • None
    • None
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?

    Description

      Summary

      Please provide a clear and concise description of the bug.
      I got few fields with their getters/setters in my POJO class. I put @BsonIgnore on them. But when trying to save the POJO to my collection. It gives me an error, that clearly says that the PojoCodec is trying to serialize the properties that are annotated with @BsonIgnore. I don't want to bson touch or save them.

      My code:

      public class Location {
          @BsonIgnore
          private Reference<World> world;
       
          private String worldName;
          private double x;
          private double y;
          private double z;
          private float pitch;
          private float yaw;
       
          @BsonCreator
          public Location(@BsonProperty("worldName") String worldName,
                          @BsonProperty("x") double x,
                          @BsonProperty("y") double y,
                          @BsonProperty("z") double z,
                          @BsonProperty("yaw") float yaw,
                          @BsonProperty("pitch") float pitch) 
              this.worldName = worldName;
              this.x = x;
              this.y = y;
              this.z = z;
              this.pitch = pitch;
              this.yaw = yaw;
              setWorld(findWorldByName());
          }
       
          @BsonIgnore
          public void setWorld(Reference<World> world) {
             //....
          }
       
          @BsonIgnore
          public Reference<World> getWorld() {
             //...
          }
          
          // other setters and getters...
      }

      Error:

       

      
      

      _[16:09:20] [Server thread/WARN]: [org.bson.codecs.pojo] Cannot use 'CraftWorld' with the PojoCodec.
      org.bson.codecs.configuration.CodecConfigurationException: Property 'ticksPerAmbientSpawns' in CraftWorld, has differing data types: TypeData{type=Integer} and TypeData{type=Long}.
          at org.bson.codecs.pojo.ClassModelBuilder.validatePropertyModels(ClassModelBuilder.java:324) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.pojo.ClassModelBuilder.build(ClassModelBuilder.java:293) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.pojo.PojoCodecProvider.createClassModel(PojoCodecProvider.java:226) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.pojo.PojoCodecProvider.createCodec(PojoCodecProvider.java:82) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.pojo.PojoCodecProvider.get(PojoCodecProvider.java:72) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.configuration.CodecProvider.get(CodecProvider.java:70) ~[bson-4.11.0.jar:?]
          at org.bson.internal.ProvidersCodecRegistry.getFromCodecProvider(ProvidersCodecRegistry.java:95) ~[bson-4.11.0.jar:?]
          at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:70) ~[bson-4.11.0.jar:?]
          at org.bson.internal.ProvidersCodecRegistry.getFromCodecProvider(ProvidersCodecRegistry.java:95) ~[bson-4.11.0.jar:?]
          at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:70) ~[bson-4.11.0.jar:?]
          at org.bson.internal.ProvidersCodecRegistry.getFromCodecProvider(ProvidersCodecRegistry.java:95) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.configuration.OverridableUuidRepresentationCodecProvider.get(OverridableUuidRepresentationCodecProvider.java:47) ~[bson-4.11.0.jar:?]
          at org.bson.internal.ProvidersCodecRegistry.getFromCodecProvider(ProvidersCodecRegistry.java:95) ~[bson-4.11.0.jar:?]
          at org.bson.internal.ProvidersCodecRegistry.lambda$get$0(ProvidersCodecRegistry.java:82) ~[bson-4.11.0.jar:?]
          at java.util.Optional.orElseGet(Optional.java:364) ~[?:?]
          at org.bson.internal.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:80) ~[bson-4.11.0.jar:?]
          at org.bson.internal.ChildCodecRegistry.get(ChildCodecRegistry.java:68) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.pojo.PojoCodecImpl.encode(PojoCodecImpl.java:92) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.pojo.LazyPropertyModelCodec.encode(LazyPropertyModelCodec.java:57) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.EncoderContext.encodeWithChildContext(EncoderContext.java:91) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.pojo.PojoCodecImpl.encodeValue(PojoCodecImpl.java:167) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.pojo.PojoCodecImpl.encodeProperty(PojoCodecImpl.java:146) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.pojo.PojoCodecImpl.encode(PojoCodecImpl.java:88) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:63) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:29) ~[bson-4.11.0.jar:?]
          at com.mongodb.internal.connection.SplittablePayload$WriteRequestEncoder.encode(SplittablePayload.java:216) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.SplittablePayload$WriteRequestEncoder.encode(SplittablePayload.java:182) ~[mongodb-driver-core-4.11.0.jar:?]
          at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:63) ~[bson-4.11.0.jar:?]
          at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:29) ~[bson-4.11.0.jar:?]
          at com.mongodb.internal.connection.BsonWriterHelper.writeDocument(BsonWriterHelper.java:77) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.BsonWriterHelper.writePayload(BsonWriterHelper.java:59) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.CommandMessage.encodeMessageBodyWithMetadata(CommandMessage.java:162) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.RequestMessage.encode(RequestMessage.java:136) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.CommandMessage.encode(CommandMessage.java:59) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:360) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.UsageTrackingInternalConnection.sendAndReceive(UsageTrackingInternalConnection.java:114) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.sendAndReceive(DefaultConnectionPool.java:765) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.CommandProtocolImpl.execute(CommandProtocolImpl.java:76) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:209) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:115) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.DefaultServerConnection.command(DefaultServerConnection.java:83) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.connection.DefaultServer$OperationCountTrackingConnection.command(DefaultServer.java:307) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.MixedBulkWriteOperation.executeCommand(MixedBulkWriteOperation.java:395) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.MixedBulkWriteOperation.executeBulkWriteBatch(MixedBulkWriteOperation.java:259) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.MixedBulkWriteOperation.lambda$execute$2(MixedBulkWriteOperation.java:203) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.SyncOperationHelper.lambda$withSourceAndConnection$0(SyncOperationHelper.java:127) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.SyncOperationHelper.withSuppliedResource(SyncOperationHelper.java:152) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.SyncOperationHelper.lambda$withSourceAndConnection$1(SyncOperationHelper.java:126) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.SyncOperationHelper.withSuppliedResource(SyncOperationHelper.java:152) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.SyncOperationHelper.withSourceAndConnection(SyncOperationHelper.java:125) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.MixedBulkWriteOperation.lambda$execute$3(MixedBulkWriteOperation.java:188) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.MixedBulkWriteOperation.lambda$decorateWriteWithRetries$0(MixedBulkWriteOperation.java:146) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.async.function.RetryingSyncSupplier.get(RetryingSyncSupplier.java:67) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:207) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.internal.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:77) ~[mongodb-driver-core-4.11.0.jar:?]
          at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:173) ~[mongodb-driver-sync-4.11.0.jar:?]
          at com.mongodb.client.internal.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:1085) ~[mongodb-driver-sync-4.11.0.jar:?]
          at com.mongodb.client.internal.MongoCollectionImpl.executeReplaceOne(MongoCollectionImpl.java:575) ~[mongodb-driver-sync-4.11.0.jar:?]
          at com.mongodb.client.internal.MongoCollectionImpl.replaceOne(MongoCollectionImpl.java:558) ~[mongodb-driver-sync-4.11.0.jar:?]
          at ru.minecomplex.core.impl.repo.MongoRepository.save(MongoRepository.java:95) ~[NetworkBukkit.jar:?]
          at ru.minecomplex.prison.repository.RegionalRepository.create(RegionalRepository.java:71) ~[Prison.jar:?]
          at ru.minecomplex.prison.island.IslandManager.create(IslandManager.java:38) ~[Prison.jar:?]
          at ru.minecomplex.prison.island.IslandManager.get(IslandManager.java:47) ~[Prison.jar:?]
          at ru.minecomplex.prison.util.ContextUtil.lambda$registerContext$2(ContextUtil.java:80) ~[Prison.jar:?]
          at co.aikar.commands.RegisteredCommand.resolveContexts(RegisteredCommand.java:231) ~[NetworkBukkit.jar:?]
          at co.aikar.commands.RegisteredCommand.resolveContexts(RegisteredCommand.java:198) ~[NetworkBukkit.jar:?]
          at co.aikar.commands.RegisteredCommand.invoke(RegisteredCommand.java:135) ~[NetworkBukkit.jar:?]
          at co.aikar.commands.BaseCommand.processCommand(BaseCommand.java:565) ~[NetworkBukkit.jar:?]
          at co.aikar.commands.BaseCommand.executeCommand(BaseCommand.java:552) ~[NetworkBukkit.jar:?]
          at co.aikar.commands.BaseCommand.execute(BaseCommand.java:491) ~[NetworkBukkit.jar:?]
          at co.aikar.commands.RootCommand.execute(RootCommand.java:99) ~[NetworkBukkit.jar:?]
          at co.aikar.commands.BukkitRootCommand.execute(BukkitRootCommand.java:84) ~[NetworkBukkit.jar:?]
          at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:168) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
          at org.bukkit.craftbukkit.v1_20_R2.CraftServer.dispatchCommand(CraftServer.java:1005) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
          at org.bukkit.craftbukkit.v1_20_R2.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
          at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:265) ~[purpur-1.20.2.jar:?]
          at net.minecraft.commands.Commands.performCommand(Commands.java:338) ~[?:?]
          at net.minecraft.commands.Commands.performCommand(Commands.java:322) ~[?:?]
          at net.minecraft.server.network.ServerGamePacketListenerImpl.performChatCommand(ServerGamePacketListenerImpl.java:2279) ~[?:?]
          at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$20(ServerGamePacketListenerImpl.java:2239) ~[?:?]
          at net.minecraft.util.thread.BlockableEventLoop.lambda$submitAsync$0(BlockableEventLoop.java:59) ~[?:?]
          at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
          at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
          at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
          at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
          at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1351) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
          at net.minecraft.server.MinecraftServer.wrapRunnable(MinecraftServer.java:193) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
          at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
          at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1328) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
          at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1321) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
          at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
          at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1299) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
          at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1187) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
          at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[purpur-1.20.2.jar:git-Purpur-"98d5dd5"]
          at java.lang.Thread.run(Thread.java:833) ~[?:?]_

       

       

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

      How to Reproduce

      Steps to reproduce. If possible, please include a Short, Self Contained, Correct (Compilable), Example.

      Make the same class with any other "World" field that contains a property which gives an similar error.  

      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
            sigamatute@gmail.com 404GATEAWAY N/A
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: