package org.jboss.resteasy.spi.metadata;

/**
 * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
 * @version $Revision: 1 $
 */
public class DefaultResourceClass implements ResourceClass {
    private static final FieldParameter[] EMPTY_FIELD_PARAMS = {};
    private static final SetterParameter[] EMPTY_SETTER_PARAMETERS = {};
    private static final ResourceMethod[] EMPTY_RESOURCE_METHODS = {};
    private static final ResourceLocator[] EMPTY_RESOURCE_LOCATORS = {};

    protected Class<?> clazz;
    protected FieldParameter[] fields = EMPTY_FIELD_PARAMS;
    protected SetterParameter[] setters = EMPTY_SETTER_PARAMETERS;
    protected ResourceMethod[] resourceMethods = EMPTY_RESOURCE_METHODS;
    protected ResourceLocator[] resourceLocators = EMPTY_RESOURCE_LOCATORS;
    protected ResourceConstructor constructor; // only one allowed
    protected String path;

    public DefaultResourceClass(final Class<?> clazz, final String path) {
        this.clazz = clazz;
        this.path = path;
    }

    @Override
    public String getPath() {
        return path;
    }

    @Override
    public Class<?> getClazz() {
        return clazz;
    }

    @Override
    public ResourceConstructor getConstructor() {
        return constructor;
    }

    @Override
    public FieldParameter[] getFields() {
        return fields;
    }

    @Override
    public SetterParameter[] getSetters() {
        return setters;
    }

    @Override
    public ResourceMethod[] getResourceMethods() {
        return resourceMethods;
    }

    @Override
    public ResourceLocator[] getResourceLocators() {
        return resourceLocators;
    }
}
