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); } return iaas; }