EMMA Coverage Report (generated Fri Nov 19 16:42:38 EST 2010)
[all classes][org.fgraph.steps]

COVERAGE SUMMARY FOR SOURCE FILE [DefaultStep.java]

nameclass, %method, %block, %line, %
DefaultStep.java100% (1/1)100% (8/8)100% (100/100)100% (22/22)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class DefaultStep100% (1/1)100% (8/8)100% (100/100)100% (22/22)
DefaultStep (Step, Object): void 100% (1/1)100% (17/17)100% (6/6)
create (Step, Object): DefaultStep 100% (1/1)100% (6/6)100% (1/1)
equals (Object): boolean 100% (1/1)100% (42/42)100% (10/10)
getDepth (): int 100% (1/1)100% (3/3)100% (1/1)
getParent (): Step 100% (1/1)100% (3/3)100% (1/1)
getValue (): Object 100% (1/1)100% (3/3)100% (1/1)
hashCode (): int 100% (1/1)100% (9/9)100% (1/1)
toString (): String 100% (1/1)100% (17/17)100% (1/1)

1/*
2 * $Id: DefaultStep.java 562 2010-11-11 00:28:13Z PSpeed $
3 *
4 * The Filament BSD license.
5 *
6 * Copyright (c) 2009-2010, the original author or authors
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * 1) Redistributions of source code must retain the above copyright notice,
13 *    this list of conditions and the following disclaimer.
14 * 2) Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in the
16 *    documentation and/or other materials provided with the distribution.
17 * 3) Neither the names "Filament", "fgraph.org", "filamentgraph.org", nor the
18 *    names of its contributors may be used to endorse or promote products
19 *    derived from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 */
33 
34package org.fgraph.steps;
35 
36import java.io.Serializable;
37 
38import com.google.common.base.Objects;
39 
40/**
41 *  A basic step implementation.
42 *
43 *  @version   $Revision: 562 $
44 *  @author    Paul Speed
45 */
46public class DefaultStep<T> implements Step<T>, Serializable
47{
48    static final long serialVersionUID = 1L;
49 
50    private Step parent;
51    private T value;
52    private int depth;
53 
54    /**
55     *  Creates a step containing the specified parent
56     *  and value.  The parent is optional but if supplied
57     *  will be used to calculate a new depth.  Otherwise the
58     *  depth is set to 0.
59     */
60    protected DefaultStep( Step parent, T value )
61    {
62        this.parent = parent;
63        this.value = value;
64        if( parent != null )
65            this.depth = parent.getDepth() + 1;
66    }
67 
68    /**
69     *  Creates a step containing the specified parent
70     *  and value.  The parent is optional but if supplied
71     *  will be used to calculate a new depth.  Otherwise the
72     *  depth is set to 0.
73     */
74    public static <T> DefaultStep<T> create( Step parent, T value )
75    {
76        return new DefaultStep<T>( parent, value );
77    }
78 
79    /**
80     *  Returns true if the supplied object is a DefaultStep
81     *  with the same depth and .equals() equivalent parent
82     *  and values.
83     */
84    @SuppressWarnings("unchecked")
85    public boolean equals( Object o )
86    {
87        if( o == this )
88            return true;
89        if( o == null || o.getClass() != getClass() )
90            return false;
91 
92        // No warning-free way to do this
93        DefaultStep<T> other = (DefaultStep<T>)o;
94        if( !Objects.equal( other.parent, parent ) )
95            return false;
96        if( !Objects.equal( other.value, value ) )
97            return false;
98        return other.depth == depth;
99    }
100 
101    /**
102     *  {@inheritDoc}
103     */
104    public int hashCode()
105    {
106        return value == null ? 0 : value.hashCode();
107    }
108 
109    /**
110     *  {@inheritDoc}
111     */
112    public T getValue()
113    {
114        return value;
115    }
116 
117    /**
118     *  {@inheritDoc}
119     */
120    public int getDepth()
121    {
122        return depth;
123    }
124 
125    /**
126     *  {@inheritDoc}
127     */
128    public Step getParent()
129    {
130        return parent;
131    }
132 
133    /**
134     *  {@inheritDoc}
135     */
136    public String toString()
137    {
138        return "Step[" + value + " : " + getDepth() + "]";
139    }
140}

[all classes][org.fgraph.steps]
EMMA 2.0.5312 (C) Vladimir Roubtsov