* @return the domain object with the same data that the XML object had
* @throws Exception
*/
protected ContentProviderPackageDetails translateXmlToDomain(PackageDetailsType pkg) throws Exception {
PackageDetailsKeyType keyType = pkg.getPackageDetailsKey();
try {
String version = "[sha256=" + pkg.getSha256() + "]";
ContentProviderPackageDetailsKey key = new ContentProviderPackageDetailsKey(keyType.getName(), version,
keyType.getPackageTypeName(), keyType.getArchitectureName(), keyType
.getResourceTypeName(), keyType.getResourceTypePlugin());
ContentProviderPackageDetails details = new ContentProviderPackageDetails(key);
details.setDisplayName(pkg.getDisplayName());
details.setDisplayVersion(pkg.getDisplayVersion());
details.setShortDescription(pkg.getShortDescription());
details.setLongDescription(pkg.getLongDescription());
details.setClassification(pkg.getClassification());
details.setFileName(pkg.getFileName());
details.setFileSize(pkg.getFileSize());
details.setFileCreatedDate(pkg.getFileCreatedDate());
details.setSHA256(pkg.getSha256());
details.setMD5(pkg.getMd5());
details.setLicenseName(pkg.getLicenseName());
details.setLicenseVersion(pkg.getLicenseVersion());
if (pkg.getMetadata() != null) {
details.setMetadata(pkg.getMetadata().getBytes());
}
details.setLocation(pkg.getLocation());
ResourceVersionsType resourceVersions = pkg.getResourceVersions();
if (resourceVersions != null) {
details.setResourceVersions(new HashSet<String>(resourceVersions.getResourceVersion()));
}
ConfigurationType extraPropertiesXml = pkg.getExtraProperties();
if (extraPropertiesXml != null) {
Configuration config = new Configuration();
List<Object> configXml = extraPropertiesXml.getSimplePropertyOrListPropertyOrMapProperty();
for (Object object : configXml) {
if (object instanceof SimplePropertyType) {
config.put(translateSimpleProperty((SimplePropertyType) object, null));
} else if (object instanceof ListPropertyType) {
config.put(translateListProperty((ListPropertyType) object, null));
} else if (object instanceof MapPropertyType) {
config.put(translateMapProperty((MapPropertyType) object, null));
} else {
throw new IllegalStateException("Unknown JAXB type: " + object); // did the schema change?
}
}
details.setExtraProperties(config);
}
return details;
} catch (Exception e) {
log.error("Failed to process package [" + keyType.getName() + " v" + keyType.getVersion() + ']');
throw e;
}
}