Newer Version Available
PackageUploadRequest
Supported SOAP Calls
create(), 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.
1static private final String packageId = "033xx00000007l0";
2static private final Integer packageMajorVersionNumber = 1;
3static private final Integer packageMinorVersionNumber = 3;
4static private final Boolean isReleaseVersion = true;
5static private final String packageVersionDescriptionSuffix = isReleaseVersion ? "" : "beta";
6static private final String packageVersionDescription = "r" + packageMinorVersionNumber + packageVersionDescriptionSuffix;
7static private final String packageDescription = String.format("This is the most amazing package in the world! And %s is the most amazing release so for!", packageVersionDescription);
8static private final String packageReleaseNotesUrl = "https://salesforce.com";
9static private final String packagePostInstallUrl = "https://salesforce.com";
10
11// Leave blank or null for no password
12static private final String packagePassword = "";
13
14static private final String baseUrl = "http://<yourInstance>:6109";Now let’s create the upload request and start the upload. This code sample uses the Web Services Connector (WSC).
1PackageUploadRequest packageUploadRequest = new PackageUploadRequest();
2packageUploadRequest.setMetadataPackageId(packageId);
3packageUploadRequest.setVersionName(packageVersionDescription);
4packageUploadRequest.setDescription(packageDescription);
5packageUploadRequest.setMajorVersion(packageMajorVersionNumber);
6packageUploadRequest.setMinorVersion(packageMinorVersionNumber);
7packageUploadRequest.setPostInstallUrl(packagePostInstallUrl);
8packageUploadRequest.setReleaseNotesUrl(packageReleaseNotesUrl);
9packageUploadRequest.setIsReleaseVersion(isReleaseVersion);
10packageUploadRequest.setPassword(packagePassword);
11
12SObject[] argArray = {packageUploadRequest};
13SaveResult[] saveResults = connection.create(argArray);
14
15if (saveResults[0].isSuccess()) {
16 // The save result contains the ID of the created request. Save it in the local request.
17 packageUploadRequest.setId(saveResults[0].getId());
18 System.out.println("PackagePushRequest created, ID: " + saveResults[0].getId());
19} else {
20 for (Error error : saveResults[0].getErrors()) {
21 System.out.println(error.getMessage());
22 }
23}Checking the Status of an Upload Request
1// Finds the status of the PackageUploadRequest for a given Id
2String query = String.format("Select status,MetadataPackageVersionId from PackageUploadRequest where Id = '%s'", packageUploadRequest.getId());
3
4boolean inProgress = false;
5boolean queued = false;
6boolean done = false;
7while (true) {
8 QueryResult queryResult = connection.query(query);
9
10 PackageUploadRequest updatedPackageUploadRequest = (PackageUploadRequest) queryResult.getRecords()[0];
11
12 PackageUploadRequestStatus status = updatedPackageUploadRequest.getStatus();
13 switch (status) {
14 case Success:
15 System.out.println(String.format("Package upload %s completed", packageUploadRequest.getId()));
16 System.out.println(String.format("Package install url: %s/packaging/installPackage.apexp?p0=%s",
17 baseUrl, updatedPackageUploadRequest.getMetadataPackageVersionId()));
18 done = true;
19 break;
20 case Error:
21 PackageUploadErrors errors = updatedPackageUploadRequest.getErrors();
22
23 if (errors.getErrors().length == 0) {
24 System.out.println(String.format("%s: For upload of package %s, no further information available",updatedPackageUploadRequest.getStatus(), packageUploadRequest.getId()));
25 }
26 else {
27 System.out.println(String.format("%s: For upload of package %s",updatedPackageUploadRequest.getStatus(), packageUploadRequest.getId()));
28 for (PackageUploadError error : errors.getErrors()) {
29 System.out.println("Error detail: " + error.getMessage());
30 }
31 }
32 assertTrue("Upload failure occurred", false);
33 break;
34 case Queued:
35 if (!queued) {
36 System.out.println(String.format("Package upload %s enqueued”, packageUploadRequest.getId()));
37 queued = true;
38 }
39 break;
40 case InProgress:
41 if (!inProgress) {
42 System.out.println(String.format("Package upload %s started", packageUploadRequest.getId()));
43 inProgress = true;
44 }
45 break;
46 case Unknown:
47 System.out.println("Unexpected package upload status: " + updatedPackageUploadRequest.getStatus());
48 }
49
50 if (done) break;
51
52 try {
53 Thread.sleep(1000);
54 } catch (InterruptedException e) {
55 // ignore interruptions
56 }
57}