* @param configElement Endpoint configuration.
* @return EndpointFactory implementation.
*/
private static EndpointFactory getEndpointFactory(OMElement configElement) {
if (configElement.getAttribute(new QName("key")) != null) {
return IndirectEndpointFactory.getInstance();
}
if (configElement.getAttribute(new QName("key-expression")) != null) {
return ResolvingEndpointFactory.getInstance();
}
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();
}
handleException("Invalid endpoint configuration.");