package io.ebean.dbmigration.model.visitor;
import io.ebeaninternal.server.deploy.BeanProperty;
import io.ebeaninternal.server.deploy.BeanPropertyAssocMany;
import io.ebeaninternal.server.deploy.BeanPropertyAssocOne;
/**
* Used to visit a BeanProperty given the type of bean property it is.
*/
public interface BeanPropertyVisitor {
/**
* Completed visiting all the properties on the bean.
*/
void visitEnd();
/**
* Visit a OneToMany or ManyToMany property.
*/
void visitMany(BeanPropertyAssocMany<?> p);
/**
* Visit the imported side of a OneToOne property.
*/
void visitOneImported(BeanPropertyAssocOne<?> p);
/**
* Visit the exported side of a OneToOne property.
*/
void visitOneExported(BeanPropertyAssocOne<?> p);
/**
* Visit an embedded property.
*/
void visitEmbedded(BeanPropertyAssocOne<?> p);
/**
* Visit the scalar property of an embedded bean.
*/
void visitEmbeddedScalar(BeanProperty p, BeanPropertyAssocOne<?> embedded);
/**
* Visit a scalar property.
*/
void visitScalar(BeanProperty p);
}