Attribute / element name collision (same local name, different namepace) cannot be configured during deserialization

Đang mở
#65 9 bình luận 9 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
45/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
java
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu với test đang thất bại trong com.fasterxml.jackson.dataformat.xml.failing.TestDeserialization, đặc biệt là testAttrElementConflict và lệnh gọi MAPPER.readValue của nó. Tái hiện lỗi, theo dõi cách thuộc tính và phần tử có tên state được phân giải trong quá trình deserialization, và coi issue là hoàn tất khi test chạy thành công với stateAttr được đặt thành "stateAttr" và state được đặt thành "stateElement".

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

most-wanted name-collision

If an element has an attribute and sub-element with the same name, the attribute seems to be ignored and the element value used, despite collision resolving configuration with @JacksonXmlProperty(localName="state", isAttribute=true) (for colliding name state). Here is concrete example

static class TwoStates {
  @JacksonXmlProperty(localName="state", isAttribute=true)
  public String stateAttr = "NOT SET";
  public String state = "NOT SET";
}

The following input should deserialize the appropriate distinct values into the appropriate distinct fields:
<Wrapper state='stateAttr'><state>stateElement</state></Wrapper>

Here is a failing test snippet for com.fasterxml.jackson.dataformat.xml.failing.TestDeserialization

        private static class TwoStates
    {
        @JacksonXmlProperty(localName="state", isAttribute=true)
        public String stateAttr = "NOT SET";
        public String state = "NOT SET";

        @Override public String toString() { return "TwoStates: stateAttr: " + stateAttr + " state: " + state; }
    }

    public void testAttrElementConflict() throws Exception
    {
        TwoStates ob = MAPPER.readValue("<Wrapper state='stateAttr'><state>stateElement</state></Wrapper>",
                TwoStates.class);
        assertNotNull(ob);
                System.err.println("ob: " + ob);
        assertEquals("stateElement", ob.state);
        assertEquals("stateAttr", ob.stateAttr); // attribute stateAttr is ignored so this fails
    }
Ngôn ngữ chính
Java
Star
636
Fork
250
Merge trung bình
7 giờ 10 phút
Pull request đã merge (30 ngày)
8

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của FasterXML/jackson-dataformat-xml

Tất cả issue của FasterXML/jackson-dataformat-xml

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.