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

net.amygdalum.testrecorder.profile.SerializationProfile Maven / Gradle / Ivy

package net.amygdalum.testrecorder.profile;

import static net.amygdalum.testrecorder.extensionpoint.ExtensionStrategy.OVERRIDING;

import java.util.List;

import net.amygdalum.testrecorder.extensionpoint.ExtensionPoint;

@ExtensionPoint(strategy=OVERRIDING)
public interface SerializationProfile {

	List getClasses();

	/**
	 * Configuring {@link #getFieldExclusions()} enables excluding specified fields from serialization. Exclude fields
	 * from serializationif they are irrelevant or not easily serialized.
	 * 
	 * {@link net.amygdalum.testrecorder.profile.Fields} provides some default predicates to put into this list.
	 *  
	 * @return a list of Fields/Predicates describing the fields to be excluded.
	 */
	List getFieldExclusions();

	/**
	 * Configuring {@link #getFieldFacades()} enables facading specified fields at serialization. Facading means that a stub of
	 * the instance is recorded, but the internal state is skipped. Facade fields if their internal state is not relevant
	 * (yet their behavior may be).
	 * 
	 * {@link net.amygdalum.testrecorder.profile.Fields} provides some default predicates to put into this list.
	 *  
	 * @return a list of Fields/Predicates describing the fields to be facaded.
	 */
	List getFieldFacades();

	/**
	 * Configuring {@link #getClassExclusions()} enables excluding specified classes from serialization. Exclude classes
	 * from serialization if they are irrelevant or not easily serialized.
	 * 
	 * {@link net.amygdalum.testrecorder.profile.Classes} provides some default predicates to put into this list.
	 *  
	 * @return a list of Classes/Predicates describing the classes to be excluded.
	 */
	List getClassExclusions();

	/**
	 * Configuring {@link #getClassFacades()} enables facading specified classes at serialization. Facading means that a stub of
	 * the instance is recorded, but the internal state is skipped. Facade classes if their internal state is not relevant 
	 * (yet their behavior may be).
	 * 
	 * {@link net.amygdalum.testrecorder.profile.Classes} provides some default predicates to put into this list.
	 *  
	 * @return a list of Classes/Predicates describing the classes to be facaded.
	 */
	List getClassFacades();
	
	/**
	 * Configuring {@link #getGlobalFields()} enables to extend serialization by global/static fields. Global/Static
	 * fields are not tracked by default and must be added to the configuration if needed. 
	 * 
	 * {@link net.amygdalum.testrecorder.profile.Fields} provides some default predicates to specify global variables/static fields.
	 *  
	 * @see Global
	 * @return a list of Fields/Predicates describing the fields to be serialized as global variables.
	 */
	List getGlobalFields();

	/**
	 * Configuring {@link #getInputs()} enables to extend serialization by input methods.
	 * 
	 * We define input as state that is dependent on sources not controlled by the JVM (e.g. filesystem, webservices,
	 * random numbers, date/time). Methods that provide such input as arguments or results can be specified as input methods
	 * by adding a specification to this list.   
	 * 
	 * {@link net.amygdalum.testrecorder.profile.Methods} provides some default predicates to specify methods that provide input.
	 *  
	 * @see Input
	 * @return a list of Methods/Predicates describing the methods providing input.
	 */
	List getInputs();

	/**
	 * Configuring {@link #getOutputs()} enables to extend serialization by output methods.
	 * 
	 * We define output as state that is consumed by systems not controlled by the JVM (e.g. filesystem, webservices, browser).
	 * Methods that consume such output as arguments can be specified as output methods by adding a specification to this list.   
	 * 
	 * {@link net.amygdalum.testrecorder.profile.Methods} provides some default predicates to specify methods that provide input.
	 *  
	 * @see Output
	 * @return a list of Methods/Predicates describing the methods consuming output.
	 */
	List getOutputs();

	/**
	 * Configuring {@link #getRecorded()} enables to extend serialization by recorded methods.
	 * 
	 * {@link net.amygdalum.testrecorder.profile.Methods} provides some default predicates to specify methods that provide input.
	 *  
	 * @see Recorded
	 * @return a list of Methods/Predicates describing the methods that should be recorded.
	 */
	List getRecorded();

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy