/*
 * @author Ranides Atterwim <ranides@gmail.com>
 * @copyright Ranides Atterwim
 * @license WTFPL
 * @url http://ranides.net/projects/assira
 */

package net.ranides.assira.reflection.mockup;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

/**
 *
 * @author Ranides Atterwim <ranides@gmail.com>
 */
@SuppressFBWarnings({
    "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD",
    "UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"
})
public final class ForResolver {

    private ForResolver() {
        /* utility class */
    }
    
    public static class A {
        public int x = 5;
        public int y = 8;
        public B content = new B();
        
        public C[] array = new C[]{new C("a"), new CN("b"), new C("c")};
        
        public List<C> list = Arrays.asList(new C("A"), new CN("B"), new C("C"));
        
        public D home = new D();
        
        public Map<Integer, C> empty = new TreeMap<>();
        
        public Map<Integer, C> nullmap;
    }
    
    public static class B {
        public E item = new E(32,16,1000);
    }
    
    public static class C {
        public String name;
        public Map<String, Number> numbers = new HashMap<>();
        
        public C(String name) {
            this.name = name;
            this.numbers.put("zero", 0);
            this.numbers.put("two", 2);
            this.numbers.put("seven", 7L);
        }
        
    }
    
    public static class CN extends C {

        public CN(String name) {
            super(name);
        }
        
    }
    
    public static class D {
        public int[] values = new int[]{4,5,6,7};
    }
    
    public static class E {
        public final int width;
        public int height;
        private int hellovalue;
        
        public E(int width, int height, int hello) {
            this.width = width;
            this.height = height;
            this.hellovalue = hello;
        }

        public int getHello() {
            return hellovalue;
        }

        public void setHello(int v) {
            hellovalue = v;
        }
    }
    
}
