/**
*
*/
package org.cloudifysource.esc.driver.provisioning.azure.model;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.adapters.XmlAdapter;
/**
* @author elip
*
*/
public class ConfigurationSetAdapter
extends
XmlAdapter<ConfigurationSetAdapter.AdaptedConfigurationSet, ConfigurationSet> {
/*
* (non-Javadoc)
*
* @see
* javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal(java.lang.Object)
*/
@Override
public ConfigurationSet unmarshal(
final AdaptedConfigurationSet adaptedConfigurationSet)
throws Exception {
if (adaptedConfigurationSet == null) {
return null;
}
if (ConfigurationSet.LINUX_PROVISIONING_CONFIGURATION.equals(adaptedConfigurationSet.configurationSetType)) {
LinuxProvisioningConfigurationSet linuxProvisioningConfigurationSet =
new LinuxProvisioningConfigurationSet();
linuxProvisioningConfigurationSet
.setDisableSshPasswordAuthentication(adaptedConfigurationSet.disableSshPasswordAuthentication);
linuxProvisioningConfigurationSet
.setHostName(adaptedConfigurationSet.hostName);
linuxProvisioningConfigurationSet
.setUserName(adaptedConfigurationSet.userName);
linuxProvisioningConfigurationSet
.setUserPassword(adaptedConfigurationSet.userPassword);
} else if (ConfigurationSet.WINDOWS_PROVISIONING_CONFIGURATION.equals(adaptedConfigurationSet.configurationSetType)) {
WindowsProvisioningConfigurationSet windowsProvisioningConfigurationSet =
new WindowsProvisioningConfigurationSet();
// windowsProvisioningConfigurationSet
// .setDisableSshPasswordAuthentication(adaptedConfigurationSet.disableSshPasswordAuthentication);
// windowsProvisioningConfigurationSet
// .setHostName(adaptedConfigurationSet.hostName);
// windowsProvisioningConfigurationSet
// .setUserName(adaptedConfigurationSet.userName);
// windowsProvisioningConfigurationSet
// .setUserPassword(adaptedConfigurationSet.userPassword);
windowsProvisioningConfigurationSet
.setComputerName(adaptedConfigurationSet.computerName);
windowsProvisioningConfigurationSet.setAdminUsername(adaptedConfigurationSet.adminUsername);
windowsProvisioningConfigurationSet.setAdminPassword(adaptedConfigurationSet.adminPassword);
windowsProvisioningConfigurationSet.setWinRM(adaptedConfigurationSet.winRM);
} else {// NetworkConfiguration
NetworkConfigurationSet networkConfigurationSet = new NetworkConfigurationSet();
networkConfigurationSet
.setConfigurationSetType(adaptedConfigurationSet.configurationSetType);
networkConfigurationSet
.setInputEndpoints(adaptedConfigurationSet.inputEndpoints);
return networkConfigurationSet;
}
return null;
}
/*
* (non-Javadoc)
*
* @see
* javax.xml.bind.annotation.adapters.XmlAdapter#marshal(java.lang.Object)
*/
@Override
public AdaptedConfigurationSet marshal(final ConfigurationSet configurationSet)
throws Exception {
if (configurationSet == null) {
return null;
}
AdaptedConfigurationSet adaptedConfigurationSet = new AdaptedConfigurationSet();
if (configurationSet instanceof LinuxProvisioningConfigurationSet) {
LinuxProvisioningConfigurationSet linuxProvisioningConfigurationSet
= (LinuxProvisioningConfigurationSet) configurationSet;
adaptedConfigurationSet.type = linuxProvisioningConfigurationSet.getType();
adaptedConfigurationSet.configurationSetType = linuxProvisioningConfigurationSet
.getConfigurationSetType();
adaptedConfigurationSet.disableSshPasswordAuthentication = linuxProvisioningConfigurationSet
.isDisableSshPasswordAuthentication();
adaptedConfigurationSet.hostName = linuxProvisioningConfigurationSet
.getHostName();
adaptedConfigurationSet.userName = linuxProvisioningConfigurationSet
.getUserName();
adaptedConfigurationSet.userPassword = linuxProvisioningConfigurationSet
.getUserPassword();
} else if (configurationSet instanceof WindowsProvisioningConfigurationSet) {
WindowsProvisioningConfigurationSet WindowsProvisioningConfigurationSet = (WindowsProvisioningConfigurationSet) configurationSet;
adaptedConfigurationSet.type = WindowsProvisioningConfigurationSet.getType();
adaptedConfigurationSet.configurationSetType = WindowsProvisioningConfigurationSet.getConfigurationSetType();
// adaptedConfigurationSet.disableSshPasswordAuthentication = WindowsProvisioningConfigurationSet.isDisableSshPasswordAuthentication();
// adaptedConfigurationSet.hostName = WindowsProvisioningConfigurationSet.getHostName();
// adaptedConfigurationSet.userName = WindowsProvisioningConfigurationSet.getUserName();
// adaptedConfigurationSet.userPassword = WindowsProvisioningConfigurationSet.getUserPassword();
adaptedConfigurationSet.adminUsername = WindowsProvisioningConfigurationSet.getAdminUsername();
adaptedConfigurationSet.adminPassword = WindowsProvisioningConfigurationSet.getAdminPassword();
adaptedConfigurationSet.computerName = WindowsProvisioningConfigurationSet.getComputerName();
adaptedConfigurationSet.winRM = WindowsProvisioningConfigurationSet.getWinRM();
} else {
NetworkConfigurationSet networkConfigurationSet = (NetworkConfigurationSet) configurationSet;
adaptedConfigurationSet.inputEndpoints = networkConfigurationSet
.getInputEndpoints();
adaptedConfigurationSet.configurationSetType = networkConfigurationSet
.getConfigurationSetType();
}
return adaptedConfigurationSet;
}
/**
*
* @author elip
*
*/
static class AdaptedConfigurationSet {
@XmlAttribute(name="type", namespace = "http://www.w3.org/2001/XMLSchema-instance")
private String type;
@XmlElement(name = "ConfigurationSetType")
private String configurationSetType;
@XmlElement(name="ComputerName")
private String computerName;
@XmlElement(name="AdminPassword")
private String adminPassword;
@XmlElement(name="WinRM")
private WinRM winRM;
@XmlElement(name="AdminUsername")
private String adminUsername;
@XmlElement(name = "HostName")
private String hostName;
@XmlElement(name = "UserName")
private String userName;
@XmlElement(name = "UserPassword")
private String userPassword;
@XmlElement(name = "DisableSshPasswordAuthentication")
private boolean disableSshPasswordAuthentication;
@XmlElement(name = "InputEndpoints")
private InputEndpoints inputEndpoints;
}
}