Element does not exist by itself. It always references other elements.
ElementFactory can manage such relationships easily.
For example, there
is another element, which refers to the SimpleElement in
Creating a user defined Element:
public class ComplexElement {
private String field1;
private SimpleElement simpleElement1;
private SimpleElement simpleElement2;
public String getField1() {
return field1;
}
public void setField1(String field1) {
this.field1 = field1;
}
public SimpleElement getSimpleElement1() {
return simpleElement1;
}
public void setSimpleElement1(SimpleElement simpleElement1) {
this.simpleElement1 = simpleElement1;
}
public SimpleElement getSimpleElement2() {
return simpleElement2;
}
public void setSimpleElement2(SimpleElement simpleElement2) {
this.simpleElement2 = simpleElement2;
}
}
In element.xml, you can define it as follows:
<elements.xml>
<myPackage.SimpleElement id="aSimpleElement" fieldA="valueA"
fieldB="valueB" fieldC="valueC" />
<myPackage.ComplexElement id="complexElement" field="fieldValue">
<ref Injection="simpleElement1" refId="aSimpleElement" />
<myPackage.SimpleElement Injection="simpleElement2" fieldA="ABCDE"
fieldB="QWERT" fieldC="YUIOP" />
</myPackage.ComplexElement>
</elements.xml>
You can create such an element using
the following statement:
public static void main(String[] args) throws Exception {
ElementFactory factory = new BasicElementFactory("jar:///elements.xml");
ComplexElement complexElement = (ComplexElement) factory.getElement("complexElement");
System.out.println("complexElement.field1: " + complexElement.getField1());
System.out.println("complexElement.simpleElement1.fieldA: " +
complexElement.getSimpleElement1().getFieldA());
System.out.println("complexElement.simpleElement2.fieldB: " +
complexElement.getSimpleElement2().getFieldB());
}
If you run this main method, you can get the following
output:
complexElement.field1: fieldValue
complexElement.simpleElement1.fieldA: valueA
complexElement.simpleElement2.fieldB: QWERT