Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package com.qoomon.domainvalue.type;
 
A Domain Value is a single not null value wrapper

Parameters:
<T> type of the wrapped value
Author(s):
Bengt Brodersen
public abstract class DV<T> {

    
the wrapped value
    private final T value;
    protected DV(final T value) {
        this. = value;
    }

    

Parameters:
value to wrap
dvType domain value type
Returns:
true if value is not null, false else
    protected static <V, T extends DV<V>> boolean validate(V valueClass<V> valueTypeClass<T> dvType) {
        T dv = newInstance(valuevalueTypedvType);
        return dv.isValid(value);
    }

    

Parameters:
value to wrap
dvType domain value type
Returns:
a DV instance
    protected static <V, T extends DV<V>> T of(V valueClass<V> valueTypeClass<T> dvType) {
        assert validate(valuevalueTypedvType) : value + " is not a valid value for " + dvType.getClass().getSimpleName();
        return newInstance(valuevalueTypedvType);
    }

    

Parameters:
value to wrap
dvType domain value type
Returns:
a new DV instance
    private static <V, T extends DV<V>> T newInstance(V valueClass<V> valueTypeClass<T> dvType) {
        try {
            Constructor<T> dvConstructor = dvType.getDeclaredConstructor(valueType);
            dvConstructor.setAccessible(true);
            return dvConstructor.newInstance(value);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    

Parameters:
value to wrap
Returns:
true if value is not null, false else
    protected boolean isValid(T value) {
        return value != null;
    }

    

Returns:
the wrapped value
    public T value() {
        return this.;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + value().hashCode();
        return result;
    }
    @Override
    public boolean equals(final Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final DV<?> other = (DV<?>) obj;
        return value().equals(other.value());
    }
    @Override
    public String toString() {
        return value().toString();
    }
New to GrepCode? Check out our FAQ X