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

pl.zientarski.DefaultReferenceNameProvider Maven / Gradle / Ivy

Go to download

The goal of this project is to provide comprehensive, feature-complete and well-tested mapper from Java classes to JSON schema format.

The newest version!
package pl.zientarski;

import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.util.List;

import static pl.zientarski.Utils.isPrimitiveTypeWrapper;
import static pl.zientarski.Utils.unwrap;

public class DefaultReferenceNameProvider implements ReferenceNameProvider {

    protected String getPrefix() {
        return "";
    }

    @Override
    public String typeReferenceName(final Class clazz, final List genericTypeArguments) {
        final StringBuilder ref = new StringBuilder();
        if (isPrimitiveTypeWrapper(clazz)) {
            ref.append(unwrap(clazz).getSimpleName());
        } else {
            ref.append(clazz.getSimpleName());
        }
        appendGenericType(ref, genericTypeArguments);

        return getPrefix() + ref.toString();

    }

    protected void appendGenericType(final StringBuilder ref, final List genericTypeArguments) {
        if (genericTypeArguments == null || genericTypeArguments.size() == 0) {
            return;
        }
        final Type removed = genericTypeArguments.remove(0);

        ref.append("<");
        if (removed instanceof TypeVariable) {
            ref.append(((TypeVariable) removed).getName());
        } else {
            ref.append(((Class) removed).getSimpleName());
            appendGenericType(ref, genericTypeArguments);
        }
        ref.append(">");
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy