PackageUploadRequest
Supported SOAP Calls
create(), describeSObjects(),query(),retrieve()
Supported REST HTTP Methods
Query, GET, POST
Fields
Field | Details |
---|---|
Description |
|
Errors |
|
IsReleaseVersion |
|
MajorVersion |
|
MetadataPackageId |
|
MetadataPackageVersionId |
|
MinorVersion |
|
Password |
|
PostInstallUrl |
|
ReleaseNotesUrl |
|
Status |
|
VersionName |
|
Usage
Suppose that you want to upload version 1.3 of your managed package. Let’s write some code to create a package upload request, upload the package version, and poll the status of the upload until it completes.
First, let’s set some variables for the request object.
static private final String packageId = "033xx00000007l0";
static private final Integer packageMajorVersionNumber = 1;
static private final Integer packageMinorVersionNumber = 3;
static private final Boolean isReleaseVersion = true;
static private final String packageVersionDescriptionSuffix =
isReleaseVersion ? "" : "beta";
static private final String packageVersionDescription =
"r" + packageMinorVersionNumber + packageVersionDescriptionSuffix;
static private final String packageDescription =
String.format("This is the most amazing package in the world! ",
"And %s is the most amazing release so far! ",
packageVersionDescription);
static private final String packageReleaseNotesUrl = "https://www.example.com";
static private final String packagePostInstallUrl = "https://www.example.com";
// Leave blank or null for no password
static private final String packagePassword = "";
static private final String baseUrl = "https://MyDomainName.my.salesforce.com:6109";
Now let’s create the upload request and start the upload. This code sample uses the Web Services Connector (WSC).
PackageUploadRequest packageUploadRequest = new PackageUploadRequest();
packageUploadRequest.setMetadataPackageId(packageId);
packageUploadRequest.setVersionName(packageVersionDescription);
packageUploadRequest.setDescription(packageDescription);
packageUploadRequest.setMajorVersion(packageMajorVersionNumber);
packageUploadRequest.setMinorVersion(packageMinorVersionNumber);
packageUploadRequest.setPostInstallUrl(packagePostInstallUrl);
packageUploadRequest.setReleaseNotesUrl(packageReleaseNotesUrl);
packageUploadRequest.setIsReleaseVersion(isReleaseVersion);
packageUploadRequest.setPassword(packagePassword);
SObject[] argArray = {packageUploadRequest};
SaveResult[] saveResults = connection.create(argArray);
if (saveResults[0].isSuccess()) {
// The save result contains the ID of the created request.
// Save it in the local request.
packageUploadRequest.setId(saveResults[0].getId());
System.out.println("PackagePushRequest created, ID: "
+ saveResults[0].getId());
} else {
for (Error error : saveResults[0].getErrors()) {
System.out.println(error.getMessage());
}
}
Checking the Status of an Upload Request
// Find the status of the PackageUploadRequest for a given ID
String query = String.format("SELECT Status,MetadataPackageVersionId
FROM PackageUploadRequest WHERE Id = '%s'", packageUploadRequest.getId());
boolean inProgress = false;
boolean queued = false;
boolean done = false;
while (true) {
QueryResult queryResult = connection.query(query);
PackageUploadRequest updatedPackageUploadRequest =
(PackageUploadRequest) queryResult.getRecords()[0];
PackageUploadRequestStatus status = updatedPackageUploadRequest.getStatus();
switch (status) {
case Success:
System.out.println(String.format("Package upload %s completed",
packageUploadRequest.getId()));
System.out.println(String.format(
"Package install url: %s/packaging/installPackage.apexp?p0=%s",
baseUrl,
updatedPackageUploadRequest.getMetadataPackageVersionId()));
done = true;
break;
case Error:
PackageUploadErrors errors = updatedPackageUploadRequest.getErrors();
if (errors.getErrors().length == 0) {
System.out.println(String.format(
"%s: For upload of package %s, no further information available",
updatedPackageUploadRequest.getStatus(),
packageUploadRequest.getId()));
}
else {
System.out.println(String.format(
"%s: For upload of package %s",
updatedPackageUploadRequest.getStatus(),
packageUploadRequest.getId()));
for (PackageUploadError error : errors.getErrors()) {
System.out.println("Error detail: " + error.getMessage());
}
}
assertTrue("Upload failure occurred", false);
break;
case Queued:
if (!queued) {
System.out.println(String.format("Package upload %s enqueued”,
packageUploadRequest.getId()));
queued = true;
}
break;
case InProgress:
if (!inProgress) {
System.out.println(String.format("Package upload %s started",
packageUploadRequest.getId()));
inProgress = true;
}
break;
case Unknown:
System.out.println("Unexpected package upload status: " +
updatedPackageUploadRequest.getStatus());
}
if (done) break;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// ignore interruptions
}
}