public interface SOAPInstanceBuilder
| Modifier and Type | Field and Description |
|---|---|
static int |
GATES_CONSTRUCTION |
static int |
GATES_INITIALIZATION |
static int |
REQUIRES_COMPLETION |
static int |
REQUIRES_CREATION |
static int |
REQUIRES_INITIALIZATION |
| Modifier and Type | Method and Description |
|---|---|
void |
construct()
Create a new instance optionally using cached values as constructor
parameters:
|
Object |
getInstance()
Return the instance that is being built.
|
void |
initialize()
If there is no default constructor then the constructor arguments will
have to be cached until they all arrive.
|
int |
memberGateType(int memberIndex)
Return the activity that is gated by a member along with the state
that member has to be in in order to allow the activity to proceed.
|
void |
setInstance(Object instance)
Use this method to cache an instance of the object.
|
void |
setMember(int index,
Object memberValue)
Initialize the value of a member of the object or cache the value for
later use during construction:
|
static final int GATES_CONSTRUCTION
static final int GATES_INITIALIZATION
static final int REQUIRES_CREATION
static final int REQUIRES_INITIALIZATION
static final int REQUIRES_COMPLETION
int memberGateType(int memberIndex)
GATES_CONSTRUCTION or it
GATES_INITIALIZATION. A member that needs to be
created in order to allow its parent object to be created or
initialized REQUIRES_CREATION if it needs to be
fully initialized in order to be used in the activity that it
gates then it REQUIRES_INITIALIZATION. If it needs
all of its own members to be initialized all the way down
to the leaf members (members without sub-members), then it
REQUIRES_COMPLETION. Note that in an object graph
that contains loops none of the nodes on a looping branch will
ever be considered to be in the "complete" state.
Here is a sample implementation:
public int memberGateType(int memberIndex) {
switch (memberIndex) {
case CONSTRUCTOR_PARAM1:
return GATES_CONSTRUCTION + REQUIRES_INITIALIZATION;
case CONSTRUCTOR_PARAM2:
return GATES_CONSTRUCTION + REQUIRES_CREATION;
case CONSTRUCTOR_PARAM3:
return GATES_CONSTRUCTION + REQUIRES_COMPLETION;
case USED_IN_SETTER1:
return GATES_INITIALIZATION + REQUIRES_COMPLETION;
case USED_IN_SETTER2:
return GATES_INITIALIZATION + REQUIRES_INITIALIZATION;
case USED_IN_SETTER3:
return GATES_INITIALIZATION + REQUIRES_CREATION;
default :
return GATES_INITIALIZATION + REQUIRES_CREATION;
}
}
void construct()
public void construct() {
instance = new myType();
OR
instance = new myType(args.param1, args.param2, args.param3,
args.param4 ...);
}
void setMember(int index,
Object memberValue)
public void setMember(int index, Object memberValue) {
switch (index) {
case INT_MEMBER1:
// Set a public data member
instance.intMember1 = ((Integer) memberValue).intValue();
// Or use a setter
instance.setIntMember1(((Integer) memberValue).intValue());
// Or if there is no default constructor you save them up
// for construction or initialization
this.intMember1 = ((Integer) memberValue).intValue();
break;
case OBJECT_MEMBER1:
instance.setObjectMember1((myObjectType) memberValue);
break;
}
}
void initialize()
setmember now is the time to
use them to initialize members.
public void initialize() {
instance.setIntMember1(members.intMember1);
instance.setObjectMember1(members.objectMember1);
etc...
}
void setInstance(Object instance)
Object getInstance()
Copyright © 2017–2019 Eclipse Foundation. All rights reserved.