if (configElement.getAttribute(new QName("template")) != null) {
return new TemplateEndpointFactory();
}
OMElement addressElement = configElement.getFirstChildWithName(
new QName(SynapseConstants.SYNAPSE_NAMESPACE, "address"));
if (addressElement != null) {
return AddressEndpointFactory.getInstance();
}
OMElement wsdlElement = configElement.getFirstChildWithName(
new QName(SynapseConstants.SYNAPSE_NAMESPACE, "wsdl"));
if (wsdlElement != null) {
return WSDLEndpointFactory.getInstance();
}
OMElement defaultElement = configElement.getFirstChildWithName(
new QName(SynapseConstants.SYNAPSE_NAMESPACE, "default"));
if (defaultElement != null) {
return DefaultEndpointFactory.getInstance();
}
OMElement lbElement = configElement.getFirstChildWithName
(new QName(SynapseConstants.SYNAPSE_NAMESPACE, "loadbalance"));
if (lbElement != null) {
OMElement sessionElement = configElement.
getFirstChildWithName(new QName(SynapseConstants.SYNAPSE_NAMESPACE, "session"));
if (sessionElement != null) {
return SALoadbalanceEndpointFactory.getInstance();
} else {
return LoadbalanceEndpointFactory.getInstance();
}
}
OMElement dlbElement = configElement.getFirstChildWithName
(new QName(SynapseConstants.SYNAPSE_NAMESPACE, "dynamicLoadbalance"));
if (dlbElement != null) {
//TODO: Handle Session affinity & failover
return DynamicLoadbalanceEndpointFactory.getInstance();
}
OMElement foElement = configElement.getFirstChildWithName
(new QName(SynapseConstants.SYNAPSE_NAMESPACE, "failover"));
if (foElement != null) {
return FailoverEndpointFactory.getInstance();
}