blob: 2d3b5f8de7d81c94949e06832fecc1fbd0e20c35 [file] [log] [blame]
package org.jclouds.azure.management.domain.role.conf;
import java.util.ArrayList;
import java.util.List;
import java.util.TimeZone;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class ConfigurationSetAdapter extends
XmlAdapter<ConfigurationSetAdapter.AdaptedConfigurationSet, ConfigurationSet> {
@Override
public ConfigurationSet unmarshal(AdaptedConfigurationSet adapted) throws Exception {
final String type = adapted.configurationSetType;
if (NetworkConfiguration.ID.equals(type)) {
NetworkConfiguration network = new NetworkConfiguration();
network.setConfigurationSetType(NetworkConfiguration.ID);
network.setInputEndpoints(adapted.inputEndpoints);
network.setSubnetNames(adapted.subnetNames);
return network;
} else if (LinuxProvisioningConfiguration.ID.equals(type)) {
LinuxProvisioningConfiguration linux = new LinuxProvisioningConfiguration();
linux.setConfigurationSetType(LinuxProvisioningConfiguration.ID);
linux.setDisableSshPasswordAuthentication(adapted.disableSshPasswordAuthentication);
linux.setHostName(adapted.hostName);
linux.setSsh(adapted.ssh);
linux.setUserName(adapted.userName);
linux.setUserPassword(adapted.userPassword);
return linux;
} else if (WindowsProvisioningConfiguration.ID.equals(type)) {
WindowsProvisioningConfiguration windows = new WindowsProvisioningConfiguration();
windows.setConfigurationSetType(WindowsProvisioningConfiguration.ID);
windows.setAdminPassword(adapted.adminPassword);
windows.setComputerName(adapted.computerName);
windows.setDomainJoin(adapted.domainJoin);
windows.setEnableAutomaticUpdates(adapted.enableAutomaticUpdates);
windows.setResetPasswordOnFirstLogon(adapted.resetPasswordOnFirstLogon);
windows.setStoredCertificateSettings(adapted.storedCertificateSettings);
windows.setTimeZone(adapted.timeZone);
return windows;
}
return null;
}
@Override
public AdaptedConfigurationSet marshal(ConfigurationSet configSet) throws Exception {
if (configSet == null) {
return null;
}
AdaptedConfigurationSet adapted = new AdaptedConfigurationSet();
adapted.configurationSetType = configSet.getConfigurationSetType();
if (configSet instanceof NetworkConfiguration) {
NetworkConfiguration network = (NetworkConfiguration) configSet;
adapted.inputEndpoints = network.getInputEndpoints();
adapted.subnetNames = network.getSubnetNames();
} else if (configSet instanceof LinuxProvisioningConfiguration) {
LinuxProvisioningConfiguration linux = (LinuxProvisioningConfiguration) configSet;
adapted.disableSshPasswordAuthentication = linux.getDisableSshPasswordAuthentication();
adapted.hostName = linux.getHostName();
adapted.ssh = linux.getSsh();
adapted.userName = linux.getUserName();
adapted.userPassword = linux.getUserPassword();
} else if (configSet instanceof WindowsProvisioningConfiguration) {
WindowsProvisioningConfiguration windows = (WindowsProvisioningConfiguration) configSet;
adapted.adminPassword = windows.getAdminPassword();
adapted.computerName = windows.getComputerName();
adapted.domainJoin = windows.getDomainJoin();
adapted.enableAutomaticUpdates = windows.getEnableAutomaticUpdates();
adapted.resetPasswordOnFirstLogon = windows.getResetPasswordOnFirstLogon();
adapted.storedCertificateSettings = windows.getStoredCertificateSettings();
adapted.timeZone = windows.getTimeZone();
}
return adapted;
}
public static class AdaptedConfigurationSet {
@XmlElement(required = true, name = "ConfigurationSetType")
public String configurationSetType;
@XmlElement(required = true, name = "HostName")
public String hostName;
@XmlElement(required = true, name = "UserName")
public String userName;
@XmlElement(required = true, name = "UserPassword")
public String userPassword;
@XmlElement(name = "DisableSshPasswordAuthentication")
public Boolean disableSshPasswordAuthentication;
@XmlElement(name = "SSH")
public SSH ssh;
@XmlElement(name = "ComputerName")
public String computerName;
@XmlElement(required = true, name = "AdminPassword")
public String adminPassword;
@XmlElement(required = true, name = "ResetPasswordOnFirstLogon")
public Boolean resetPasswordOnFirstLogon;
@XmlElement(name = "EnableAutomaticUpdates")
public Boolean enableAutomaticUpdates;
@XmlElement(name = "TimeZone")
public TimeZone timeZone;
@XmlElement(name = "DomainJoin")
public DomainJoin domainJoin;
@XmlElementWrapper(required = true, name = "StoredCertificateSettings")
@XmlElement(name = "CertificateSetting")
public List<CertificateSetting> storedCertificateSettings = new ArrayList<CertificateSetting>();
@XmlElementWrapper(name = "InputEndpoints")
@XmlElement(name = "InputEndpoint")
public List<InputEndpoint> inputEndpoints = new ArrayList<InputEndpoint>(0);
@XmlElementWrapper(name = "SubnetNames")
@XmlElement(name = "SubnetName")
public List<String> subnetNames = new ArrayList<String>(0);
}
}