throw new PermissionException("User [" + user.getName()
+ "] does not have permission to create a child resource for resource [" + parentResource + "]");
}
ResourceType newResourceType = entityManager.find(ResourceType.class, newResourceTypeId);
PackageType newPackageType = contentManager.getResourceCreationPackageType(newResourceTypeId);
if (!newResourceType.isCreatable()
|| (newResourceType.getCreationDataType() != ResourceCreationDataType.CONTENT)) {
throw new RuntimeException("Cannot create " + newResourceType + " child Resource under parent "
+ parentResource + ", since the " + newResourceType
+ " type does not support content-based Resource creation.");
}
abortResourceCreationIfExistingSingleton(parentResource, newResourceType);
// unless version is set start versioning the package by timestamp
packageVersionNumber = (null == packageVersionNumber) ? Long.toString(System.currentTimeMillis())
: packageVersionNumber;
// default to no required architecture
architectureId = (null != architectureId) ? architectureId : contentManager.getNoArchitecture().getId();
// Create/locate package and package version
PackageVersion packageVersion = null;
if (packageUploadDetails == null) {
packageVersion = contentManager.createPackageVersionWithDisplayVersion(user, packageName,
newPackageType.getId(), packageVersionNumber, null, architectureId, packageBitStream);
} else {
packageVersion = contentManager.getUploadedPackageVersion(user, packageName, newPackageType.getId(),
packageVersionNumber, architectureId, packageBitStream, packageUploadDetails, null);
}
return doCreatePackageBackedResource(user, parentResource, newResourceType, newResourceName,
pluginConfiguration, deploymentTimeConfiguration, packageVersion, timeout);