return nodeList != null ? nodeList.get(0) : null;
}
private IaasProvider getIaasProvider(final OMNode item, List<IaasProvider> iaases) {
IaasProvider iaas = null;
if (item.getType() == OMNode.ELEMENT_NODE) {
OMElement iaasElt = (OMElement) item;
if (iaases != null) {
// check whether this is a reference to a predefined IaaS.
for (IaasProvider iaasProvider : iaases) {
if (iaasProvider.getType()
.equals(iaasElt.getAttribute(new QName(
CloudControllerConstants.TYPE_ATTR))
.getAttributeValue())) {
iaas = new IaasProvider(iaasProvider);
break;
}
}
}
if (iaas == null) {
iaas = new IaasProvider();
}
if (iaas.getType() == null) {
iaas.setType(iaasElt.getAttribute(new QName(CloudControllerConstants.TYPE_ATTR))
.getAttributeValue());
}
if ("".equals(iaas.getType())) {
String msg =
"'" + CloudControllerConstants.IAAS_PROVIDER_ELEMENT + "' element's '" +
CloudControllerConstants.TYPE_ATTR +
"' attribute should be specified!";
handleException(msg);
}
// this is not mandatory
String name =
(iaasElt.getAttribute(new QName(CloudControllerConstants.NAME_ATTR)) == null)
? iaas.getName()
: iaasElt.getAttributeValue(new QName(
CloudControllerConstants.NAME_ATTR));
iaas.setName(name);
String xpath = CloudControllerConstants.IAAS_PROVIDER_ELEMENT_XPATH;
// load other elements
loadClassName(iaas, iaasElt);
loadMaxInstanceLimit(iaas, iaasElt);
loadProperties(iaasElt, iaas.getProperties());
loadTemplate(iaas, iaasElt);
loadScalingOrders(iaas, iaasElt);
loadProvider(iaas, iaasElt);
loadIdentity(iaas, iaasElt);
loadCredentials(iaas, iaasElt, xpath);