private PackageType ensurePackageTypeExists(PackageTypeDefinitionType def) throws InvalidPluginDescriptorException {
SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager();
ContentManagerLocal cm = LookupUtil.getContentManager();
PackageType packageType = cm.findPackageType(subjectManager.getOverlord(), null, def.getName());
if (packageType == null) {
//TODO support tying the package type to the resource types?
packageType = new PackageType(def.getName(), null);
packageType.setDescription(def.getDescription());
packageType.setDisplayName(def.getDisplayName());
packageType.setSupportsArchitecture(def.isSupportsArchitecture());
packageType.setCreationData(false);
packageType.setDeploymentConfigurationDefinition(ConfigurationMetadataParser.parse(def.getName(),
def.getConfiguration()));
packageType.setDiscoveryInterval(-1);
packageType.setPackageExtraPropertiesDefinition(null);
packageType = cm.persistServersidePackageType(packageType);
}
return packageType;