com.vaadin.data.PropertyDefinition Maven / Gradle / Ivy
/*
* Copyright (C) 2000-2024 Vaadin Ltd
*
* This program is available under Vaadin Commercial License and Service Terms.
*
* See for the full
* license.
*/
package com.vaadin.data;
import java.io.Serializable;
import java.util.Optional;
import com.vaadin.server.Setter;
/**
* A property from a {@link PropertySet}.
*
* @author Vaadin Ltd
* @since 8.0
*
* @param
* the type of the property set
* @param
* the property type
*/
public interface PropertyDefinition extends Serializable {
/**
* Gets the value provider that is used for finding the value of this
* property for a bean.
*
* @return the getter, not null
*/
public ValueProvider getGetter();
/**
* Gets an optional setter for storing a property value in a bean.
*
* @return the setter, or an empty optional if this property is read-only
*/
public Optional> getSetter();
/**
* Gets the type of this property.
*
* @return the property type. not null
*/
public Class getType();
/**
* Gets the type of the class containing this property.
*
* @since 8.1
*
* @return the property type. not null
*/
public Class> getPropertyHolderType();
/**
* Gets the full name of this property.
*
* @return the property name, not null
*/
public String getName();
/**
* Gets the top level name of this property.
*
* @return the top level property name, not null
* @since 8.3
*/
public default String getTopLevelName() {
return getName();
}
/**
* Gets the human readable caption to show for this property.
*
* @return the caption to show, not null
*/
public String getCaption();
/**
* Gets the {@link PropertySet} that this property belongs to.
*
* @return the property set, not null
*/
public PropertySet getPropertySet();
}