1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/*
2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Copyright (c) 2007 Mockito contributors
3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * This program is made available under the terms of the MIT License.
4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */
5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpackage org.mockito.internal.util.reflection;
7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/**
9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Report on field initialization
10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */
11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class FieldInitializationReport {
12e03a0f42b85425bffd40bcf790819671a7848c1aPaul Duffin    private final Object fieldInstance;
13e03a0f42b85425bffd40bcf790819671a7848c1aPaul Duffin    private final boolean wasInitialized;
14e03a0f42b85425bffd40bcf790819671a7848c1aPaul Duffin    private final boolean wasInitializedUsingConstructorArgs;
15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public FieldInitializationReport(Object fieldInstance, boolean wasInitialized, boolean wasInitializedUsingConstructorArgs) {
17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        this.fieldInstance = fieldInstance;
18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        this.wasInitialized = wasInitialized;
19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        this.wasInitializedUsingConstructorArgs = wasInitializedUsingConstructorArgs;
20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Returns the actual field instance.
24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return the actual instance
26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public Object fieldInstance() {
28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        return fieldInstance;
29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Indicate wether the field was created during the process or not.
33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return <code>true</code> if created, <code>false</code> if the field did already hold an instance.
35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public boolean fieldWasInitialized() {
37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        return wasInitialized;
38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Indicate wether the field was created using constructor args.
42e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
43e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return <code>true</code> if field was created using constructor parameters.
44e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
45e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public boolean fieldWasInitializedUsingContructorArgs() {
46e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        return wasInitializedUsingConstructorArgs;
47e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
48e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
49e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
50e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Returns the class of the actual instance in the field.
51e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
52e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return Class of the instance
53e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
54e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public Class<?> fieldClass() {
55e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        return fieldInstance != null ? fieldInstance.getClass() : null;
56e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
57e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}
58e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
59