/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.utils.incubator.configuration;
import de.rcenvironment.core.utils.incubator.configuration.annotation.Configurable;
/**
* The property of a configuration in a {@link ConfigurationInfo}.
*
* @author Christian Weiss
*/
public interface ConfigurationProperty {
/**
* Returns the {@link Configurable.ValueProvider}.
*
* @return the {@link Configurable.ValueProvider}
*/
Configurable.ValueProvider getValueProvider();
/**
* Returns the {@link Configurable.LabelProvider}.
*
* @return the {@link Configurable.LabelProvider}
*/
Configurable.LabelProvider getLabelProvider();
/**
* Returns the type of this property.
*
* @return the type
*/
Class<?> getType();
/**
* Gets the value.
*
* @param object the object
* @return the value
* @throws IllegalArgumentException the illegal argument exception
*/
Object getValue(Object object) throws IllegalArgumentException;
/**
* Sets the value of this property.
*
* @param object the object
* @param value the value
* @throws IllegalArgumentException the illegal argument exception
*/
void setValue(Object object, Object value) throws IllegalArgumentException;
}