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

Encoding enums via codecs

    • Type: Icon: Task Task
    • Resolution: Done
    • Priority: Icon: Critical - P2 Critical - P2
    • None
    • Affects Version/s: 3.7.0
    • Component/s: Codecs
    • Labels:

      I have a package "com.test"

      It has 2 classes:

       

      public class Employee {
      
      private String name;
      
      private String id;
      
      private Long age;
      
      private Currency salaryCurrency;
      
      private Double pay;
      
      private isActive;
      
      private Type type = Type.CONTRACT;
      
      //getter setters
      
      }
      

       

      public enum Type {
      
      CONTRACT,PERMANENT;
      
      }
      

       

      When I try to encode I get no codec found for Type.

      PS i created custom CurrencyCodec

      
      Employee emp = new Employee();
      emp.setType(Type.PERMANENT);
      emp.setAge(30);
      emp.setName("TestUser");
      PojoCodecProvider builder = PojoCodecProvider.builder().conventions(Conventions
              .DEFAULT_CONVENTIONS)
              .automatic(false).register("com.test").build();
      CodecRegistry pojoCodecRegistry = CodecRegistries.fromRegistries(fromProviders(builder),
              fromCodecs(new LongCodec(),new CurrencyCodec(),
                      new StringCodec(), new DateCodec(), new BooleanCodec(), new DoubleCodec()));
      emp.setId(UUID.randomUUID().toString());
      Codec<Employee> st = builder.get(Employee.class,pojoCodecRegistry);
      BsonDocument doc = new BsonDocument();
      st.encode(new BsonDocumentWriter(doc),emp, EncoderContext.builder().isEncodingCollectibleDocument(true).build
              ());
      

            Assignee:
            Unassigned Unassigned
            Reporter:
            richiarora richi arora
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: