Fluxtion generator will inject scalar properties into the SEP at runtime. The properties are read at generation time and the generated SEP will have the values hard-coded in the generated file. Using property injection client code can inject either default values or constant values into the SEP.
Property type support
The supported types that can be injected into a SEP member are:
Managed node references
byte
char
short
int
float
long
double
String
Enum
Unsupported types can be written in an method, derived from an injected property.
Injection mechanism
The following access patterns for property injection are supported:
Access Pattern
Description
Bean getter/setter
Fluxtion will look for a read/write bean pattern and generate a setXXX
call in the SEP
Final fields
A constructor must be available that matches exactly the final fields.
If one exists Flxution will generate the constructor call.
public fields
Public fields are values are written in the generated SEP. The field must
non-transient, public scope and mutable.
Derived final fields are not supported, the class must have a constructor referencing all the final fields.
Example
The example demonstrates all the capabilities of scalar property injection: final fields with constructors, public properties, bean properties and transient properties. The generated SEP contains the values set in the builder.
Node class
public class PropertyHandler {
//final properties
private final boolean booleanFinalProp;
//ommitted properties
private final SampleEnum enumFinalProp;
//public properties
public boolean booleanPublicProp;
//ommitted properties
public SampleEnum enumPublicProp;
//bean properties
private boolean booleanBeanProp;
//ommitted properties
private SampleEnum enumBeanProp;
//transient properties - ignored
public transient boolean booleanTransientProp;
//ommitted properties
public transient SampleEnum enumTransientProp;
public PropertyHandler(boolean booleanFinalProp, byte byteFinalProp, char charFinalProp, short shortFinalProp, float floatFinalProp, int intFinalProp, double doubleFinalProp, long longFinalProp, String stringFinalProp, SampleEnum enumFinalProp) {
this.booleanFinalProp = booleanFinalProp;
this.byteFinalProp = byteFinalProp;
this.charFinalProp = charFinalProp;
this.shortFinalProp = shortFinalProp;
this.floatFinalProp = floatFinalProp;
this.intFinalProp = intFinalProp;
this.doubleFinalProp = doubleFinalProp;
this.longFinalProp = longFinalProp;
this.stringFinalProp = stringFinalProp;
this.enumFinalProp = enumFinalProp;
}
public boolean isBooleanBeanProp() {
return booleanBeanProp;
}
public void setBooleanBeanProp(boolean booleanBeanProp) {
this.booleanBeanProp = booleanBeanProp;
}
public byte getByteBeanProp() {
return byteBeanProp;
}
public void setByteBeanProp(byte byteBeanProp) {
this.byteBeanProp = byteBeanProp;
}
public char getCharBeanProp() {
return charBeanProp;
}
public void setCharBeanProp(char charBeanProp) {
this.charBeanProp = charBeanProp;
}
public short getShortBeanProp() {
return shortBeanProp;
}
public void setShortBeanProp(short shortBeanProp) {
this.shortBeanProp = shortBeanProp;
}
public float getFloatBeanProp() {
return floatBeanProp;
}
public void setFloatBeanProp(float floatBeanProp) {
this.floatBeanProp = floatBeanProp;
}
public int getIntBeanProp() {
return intBeanProp;
}
public void setIntBeanProp(int intBeanProp) {
this.intBeanProp = intBeanProp;
}
public double getDoubleBeanProp() {
return doubleBeanProp;
}
public void setDoubleBeanProp(double doubleBeanProp) {
this.doubleBeanProp = doubleBeanProp;
}
public long getLongBeanProp() {
return longBeanProp;
}
public void setLongBeanProp(long longBeanProp) {
this.longBeanProp = longBeanProp;
}
public String getStringBeanProp() {
return stringBeanProp;
}
public void setStringBeanProp(String stringBeanProp) {
this.stringBeanProp = stringBeanProp;
}
public SampleEnum getEnumBeanProp() {
return enumBeanProp;
}
public void setEnumBeanProp(SampleEnum enumBeanProp) {
this.enumBeanProp = enumBeanProp;
}
@EventHandler
public void myEvent(MyEvent event){
}
@Initialise
public void init(){
//calculate and set any derived properties here
}
}
SEPConfig builder
The builder sets the property values for reading at generation time.