aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com/fasterxml/jackson/databind/deser/impl/BeanPropertyMapTest.java
blob: 6363e5722decf5556c40af9038080aeb989441b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.fasterxml.jackson.databind.deser.impl;

import java.util.*;

import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.deser.SettableBeanProperty;
import com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap;
import com.fasterxml.jackson.databind.deser.impl.ObjectIdReader;
import com.fasterxml.jackson.databind.deser.impl.ObjectIdValueProperty;
import com.fasterxml.jackson.databind.type.TypeFactory;

// for [databind#884]
public class BeanPropertyMapTest extends BaseMapTest
{
    protected final static JavaType BOGUS_TYPE = TypeFactory.unknownType();
    
    @SuppressWarnings("serial")
    static class MyObjectIdReader extends ObjectIdReader
    {
        public MyObjectIdReader(String name) {
            super(BOGUS_TYPE, new PropertyName(name), null,
                    null, null, null);
        }
    }

    // Highly specialized test in which we get couple of hash collisions for
    // small (16) hash map
    public void testArrayOutOfBounds884() throws Exception
    {
        List<SettableBeanProperty> props = new ArrayList<SettableBeanProperty>();
        PropertyMetadata md = PropertyMetadata.STD_REQUIRED;
        props.add(new ObjectIdValueProperty(new MyObjectIdReader("pk"), md));
        props.add(new ObjectIdValueProperty(new MyObjectIdReader("firstName"), md));
        BeanPropertyMap propMap = new BeanPropertyMap(false, props,
                new HashMap<String,List<PropertyName>>(),
                Locale.getDefault());
        propMap = propMap.withProperty(new ObjectIdValueProperty(new MyObjectIdReader("@id"), md));
        assertNotNull(propMap);
    }
}