All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.javers.core.metamodel.type.ParametrizedDehydratedType Maven / Gradle / Ivy

There is a newer version: 7.6.1
Show newest version
package org.javers.core.metamodel.type;

import org.javers.common.collections.Lists;
import org.javers.common.string.ToStringBuilder;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.List;

import static org.javers.common.validation.Validate.argumentIsNotNull;

/**
 * @author bartosz walacik
 */
public class ParametrizedDehydratedType implements ParameterizedType{
    private final Type rawType;
    private final Type[] actualTypeArguments;

    public ParametrizedDehydratedType(Type rawType, List actualDehydratedTypeArguments) {
        argumentIsNotNull(rawType);
        this.rawType = rawType;
        this.actualTypeArguments = actualDehydratedTypeArguments.toArray(new Type[]{});
    }

    @Override
    public Type[] getActualTypeArguments() {
        return actualTypeArguments;
    }

    @Override
    public Type getRawType() {
        return rawType;
    }

    @Override
    public Type getOwnerType() {
        return null;
    }

    @Override
    public String toString() {
        return rawType + ToStringBuilder.listToString(Lists.asList(actualTypeArguments));
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        ParametrizedDehydratedType that = (ParametrizedDehydratedType) o;

        return rawType.equals(that.rawType) && Arrays.equals(actualTypeArguments, that.actualTypeArguments);
    }

    @Override
    public int hashCode() {
        return rawType.hashCode() + 31 * Arrays.hashCode(actualTypeArguments);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy