This is a sample application that is written in Java. It queries entities in Mirage, centralizes endpoints, and migrates a CVD operating system.

//This is the Java sample code of Mirage API, which includes three parts. //1. Query entities in Mirage, such as policy, volume, pending device, CVD, base layer and app layer //2. Centralize endpoints. //3. Migrate CVD Operating System. //4. CVD assign base layer. //5. CVD update app layer. package com.vmware.mirage.mit.sample; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.util.HashSet; import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import org.apache.axis2.AxisFault; import org.apache.axis2.java.security.SSLProtocolSocketFactory; import org.apache.axis2.java.security.TrustAllTrustManager; import org.apache.axis2.transport.http.HTTPConstants; import org.apache.commons.httpclient.HttpState; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; import org.apache.log4j.Logger; import com.vmware.mirage.mit.MitServiceStub; import com.vmware.mirage.mit.MitServiceStub.*; public class MirageAPISample { private static Logger logger = Logger.getLogger(MirageAPISample.class); private MitServiceStub client = null; private static String ENDPOINT = "https://<Web Management Server IP>:7443/mirageapi/mitservice.svc"; private static String USERNAME = "<username>"; private static String PASSWORD = "<password>"; private static String DOMAIN = "<domain name>"; public static void main(final String... args) throws Exception { final MirageAPISample sample = new MirageAPISample(); sample.login(); try { sample.policyQuery(); sample.volumeQuery(); sample.cvdQuery(); sample.pendingDeviceQuery(); sample.baselayerQuery(); sample.applayerQuery(); sample.ceFlow(); sample.migrationFlow(); sample.provisionFlow(); sample.cvdAssignBaseLayerFlow(); sample.cvdUpdateAppLayerFlow(); } finally { try { sample.logout(); } catch (final Exception e) { logger.error("Failed to logout.", e); } } } // Create and configure API client with ENDPOINT public MirageAPISample() throws AxisFault, KeyManagementException, NoSuchAlgorithmException { client = new MitServiceStub(ENDPOINT); configureClient(); } // Login Mirage API server with username and password public void login() throws Exception { final Login login = new Login(); login.setUsername(USERNAME); login.setPassword(PASSWORD); client.login(login); } // Logout Mirage API server public void logout() throws Exception { final Logout logout = new Logout(); client.logout(logout); } // Query policy without filter, only the first page returns. public void policyQuery() throws Exception { final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setPage(1); final Policy_Query policy_Query = new Policy_Query(); policy_Query.setQueryDefinition(queryDefinition); final Policy_QueryResponse policies = client.policy_Query(policy_Query); final QueryResult result = policies.getPolicy_QueryResult(); if (result.getElements().getAnyType() != null) { for (final Object element : result.getElements().getAnyType()) { final PolicyDetails policyDetails = (PolicyDetails) element; System.out.println(String.format("policyDetails %s %s", policyDetails.getName(), policyDetails.getImageId())); } } } // Query volumes without filter, only the first page returns. public void volumeQuery() throws Exception { final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setPage(1); queryDefinition.setFilter(null); final Volume_Query volume_Query = new Volume_Query(); volume_Query.setQueryDefinition(queryDefinition); final Volume_QueryResponse volumes = client.volume_Query(volume_Query); final QueryResult result = volumes.getVolume_QueryResult(); if (result.getElements().getAnyType() != null) { for (final Object element : result.getElements().getAnyType()) { final VolumeDetails volumeDetails = (VolumeDetails) element; System.out.println(String.format("volumeDetails %s %s", volumeDetails.getName(), volumeDetails.getPath())); } } } // Query Cvds whose name starts with "VMware" and progress equals to 100, only the first page returns. public void cvdQuery() throws Exception { /* name starts with "VMware" */ final QueryFilterBeginsWith beginFilter = new QueryFilterBeginsWith(); beginFilter.setField(FilterField.CVD_NAME); beginFilter.setValue("VMware"); /* progress is 100 */ final QueryFilterEquals equalFilter = new QueryFilterEquals(); equalFilter.setField(FilterField.CVD_PROGRESS); equalFilter.setValue((long) 100); // must use long for progress /* Create and filter */ final QueryFilterAnd andFilter = new QueryFilterAnd(); final ArrayOfQueryFilter filterArr = new ArrayOfQueryFilter(); filterArr.addQueryFilter(beginFilter); filterArr.addQueryFilter(equalFilter); andFilter.setFilters(filterArr); final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setPage(1); queryDefinition.setFilter(andFilter); final Cvd_Query cvdQuery = new Cvd_Query(); cvdQuery.setQueryDefinition(queryDefinition); final Cvd_QueryResponse cvds = client.cvd_Query(cvdQuery); final QueryResult result = cvds.getCvd_QueryResult(); if (result.getElements().getAnyType() != null) { for (final Object element : result.getElements().getAnyType()) { final CvdDetails cvdDetails = (CvdDetails) element; System.out.println(String.format("cvdDetails %s %s %s", cvdDetails.getId(), cvdDetails.getName(), cvdDetails.getOperationProgress())); } } } // Query pending device whose state is disconnect, only the first page returns. public void pendingDeviceQuery() throws Exception { /* Disconnected */ final QueryFilterEquals equalFilter = new QueryFilterEquals(); equalFilter.setField(FilterField.DEVICE_CONNECTION_STATE); equalFilter.setValue(false); final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setFilter(equalFilter); queryDefinition.setPage(1); final PendingDevice_Query pendingDeviceQuery = new PendingDevice_Query(); pendingDeviceQuery.setQueryDefinition(queryDefinition); final PendingDevice_QueryResponse pendingDevices = client.pendingDevice_Query(pendingDeviceQuery); final QueryResult result = pendingDevices.getPendingDevice_QueryResult(); if (result.getElements().getAnyType() != null) { for (final Object element : result.getElements().getAnyType()) { final DeviceDetails deviceDetails = (DeviceDetails) element; System.out.println(String.format("deviceDetails %s %s", deviceDetails.getName(), deviceDetails.getConnected())); } } } // Query base layers without filter, only the first page returns. public void baselayerQuery() throws Exception { final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setPage(1); final BaseLayer_Query baseLayerQuery = new BaseLayer_Query(); baseLayerQuery.setQueryDefinition(queryDefinition); final BaseLayer_QueryResponse baseLayers = client.baseLayer_Query(baseLayerQuery); final QueryResult result = baseLayers.getBaseLayer_QueryResult(); if (result.getElements().getAnyType() != null) { for (final Object element : result.getElements().getAnyType()) { final LayerDetails baseLayerDetails = (LayerDetails) element; System.out.println(String.format("baseLayer %s %s", baseLayerDetails.getName(), baseLayerDetails.getImageId())); } } } // Query app layers without filter, only the first page returns. public void applayerQuery() throws Exception { final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setPage(1); final AppLayer_Query baseLayerQuery = new AppLayer_Query(); baseLayerQuery.setQueryDefinition(queryDefinition); final AppLayer_QueryResponse baseLayers = client.appLayer_Query(baseLayerQuery); final QueryResult result = baseLayers.getAppLayer_QueryResult(); if (result.getElements().getAnyType() != null) { for (final Object element : result.getElements().getAnyType()) { final LayerDetails baseLayerDetails = (LayerDetails) element; System.out.println(String.format("appLayer %s %s", baseLayerDetails.getName(), baseLayerDetails.getImageId())); } } } // Centralization endpoint flow. public void ceFlow() throws Exception { /* Get policy */ final QueryFilterContains policyFilter = new QueryFilterContains(); policyFilter.setField(FilterField.POLICY_NAME); policyFilter.setValue("default"); final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setPage(1); queryDefinition.setFilter(policyFilter); final Policy_Query policyQuery = new Policy_Query(); policyQuery.setQueryDefinition(queryDefinition); final Policy_QueryResponse policyResponse = client.policy_Query(policyQuery); final Object[] policyArr = policyResponse.getPolicy_QueryResult().getElements().getAnyType(); if (policyArr.length == 0) { return; } final PolicyDetails policy = (PolicyDetails) policyArr[0]; /* Get volume */ final QueryFilterEquals volumeFilter = new QueryFilterEquals(); policyFilter.setField(FilterField.VOLUME_NAME); policyFilter.setValue("DefaultVolume"); queryDefinition.setFilter(volumeFilter); final Volume_Query volumeQuery = new Volume_Query(); volumeQuery.setQueryDefinition(queryDefinition); final Volume_QueryResponse volumeResponse = client.volume_Query(volumeQuery); final Object[] volumeArr = volumeResponse.getVolume_QueryResult().getElements().getAnyType(); if (volumeArr.length == 0) { return; } final VolumeDetails volume = (VolumeDetails) volumeArr[0]; /* Get device */ final PendingDevice_Query pendingDeviceQuery = new PendingDevice_Query(); pendingDeviceQuery.setQueryDefinition(queryDefinition); final PendingDevice_QueryResponse pendingDeviceResponse = client.pendingDevice_Query(pendingDeviceQuery); final Object[] deviceArr = pendingDeviceResponse.getPendingDevice_QueryResult().getElements().getAnyType(); if (deviceArr.length == 0) { return; } final DeviceDetails device = (DeviceDetails) deviceArr[0]; /* Create new Cvd */ final PendingDevice_CreateNewCvd pendingDeviceCreateNewCvd = new PendingDevice_CreateNewCvd(); pendingDeviceCreateNewCvd.setPolicyId(policy.getImageId()); pendingDeviceCreateNewCvd.setVolumeId(volume.getId()); final ArrayOfId ids = new ArrayOfId(); ids.addId(device.getId()); pendingDeviceCreateNewCvd.setDeviceIds(ids); final PendingDevice_CreateNewCvdResponse batchResultResponse = client .pendingDevice_CreateNewCvd(pendingDeviceCreateNewCvd); final BatchResult batchResult = batchResultResponse.getPendingDevice_CreateNewCvdResult(); /* Get the Id of new Cvd from BatchResult */ final OperationResult[] operationResultArr = batchResult.getResults().getOperationResult(); if (operationResultArr.length == 0) { throw new Exception("There is no result for PendingDevice_CreateNewCvd."); } final OperationResult result = operationResultArr[0]; final long idValue = (long) result.getResult(); final Id cvdId = new Id(); cvdId.setIdValue(idValue); /* Validate the completion of creating Cvd */ final QueryFilterEquals equalFilter = new QueryFilterEquals(); equalFilter.setField(FilterField.CVD_ID); equalFilter.setValue(cvdId); queryDefinition.setFilter(equalFilter); queryDefinition.setPage(1); final Cvd_Query cvdQuery = new Cvd_Query(); cvdQuery.setQueryDefinition(queryDefinition); while (true) { final Cvd_QueryResponse cvds = client.cvd_Query(cvdQuery); final QueryResult cvdResult = cvds.getCvd_QueryResult(); final Object[] cvdResultArr = cvdResult.getElements().getAnyType(); if (cvdResultArr.length > 0) { final CvdDetails cvdDetails = (CvdDetails) cvdResultArr[0]; final ImageVersion machineVersion = cvdDetails.getMachineVersion(); /* The complete condition of CE flow is that the machine version of CVD is not 1.0 */ if (machineVersion.getMajor() != 1 || machineVersion.getMinor() != 0) { break; } TimeUnit.MINUTES.sleep(2); } } System.out.println("OK to create new cvd."); } public void provisionFlow() throws Exception { /* Get policy */ final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setPage(1); final Policy_Query policyQuery = new Policy_Query(); policyQuery.setQueryDefinition(queryDefinition); final Policy_QueryResponse policyResponse = client.policy_Query(policyQuery); final Object[] policyArr = policyResponse.getPolicy_QueryResult().getElements().getAnyType(); if (policyArr.length == 0) { return; } final PolicyDetails policy = (PolicyDetails) policyArr[0]; /* Get volume */ final Volume_Query volumeQuery = new Volume_Query(); volumeQuery.setQueryDefinition(queryDefinition); final Volume_QueryResponse volumeResponse = client.volume_Query(volumeQuery); final Object[] volumeArr = volumeResponse.getVolume_QueryResult().getElements().getAnyType(); if (volumeArr.length == 0) { return; } final VolumeDetails volume = (VolumeDetails) volumeArr[0]; /* Get device */ final PendingDevice_Query pendingDeviceQuery = new PendingDevice_Query(); pendingDeviceQuery.setQueryDefinition(queryDefinition); final PendingDevice_QueryResponse pendingDeviceResponse = client.pendingDevice_Query(pendingDeviceQuery); final Object[] deviceArr = pendingDeviceResponse.getPendingDevice_QueryResult().getElements().getAnyType(); if (deviceArr.length == 0) { return; } final DeviceDetails device = (DeviceDetails) deviceArr[0]; /* Get base layer */ final BaseLayer_Query baseLayerQuery = new BaseLayer_Query(); baseLayerQuery.setQueryDefinition(queryDefinition); final BaseLayer_QueryResponse baseLayerResponse = client.baseLayer_Query(baseLayerQuery); final Object[] baseLayerArr = baseLayerResponse.getBaseLayer_QueryResult().getElements().getAnyType(); if (baseLayerArr.length == 0) { return; } final LayerDetails baseLayerDetails = (LayerDetails) baseLayerArr[0]; /* Start device provision */ final MachineIdentityInfo machineIdentityInfo = new MachineIdentityInfo(); machineIdentityInfo.setDomainMember(true); machineIdentityInfo.setDomainOrWorkgroupName(DOMAIN); machineIdentityInfo.setUser(USERNAME); machineIdentityInfo.setPassword(PASSWORD); final PendingDevice_Provision pendingDeviceProvision = new PendingDevice_Provision(); pendingDeviceProvision.setPolicyImageId(policy.getImageId()); pendingDeviceProvision.setVolumeId(volume.getId()); pendingDeviceProvision.setBaseLayerImageId(baseLayerDetails.getImageId()); pendingDeviceProvision.setIdentityInfo(machineIdentityInfo); pendingDeviceProvision.setIgnoreWarnings(true); final ArrayOfId ids = new ArrayOfId(); ids.addId(device.getId()); pendingDeviceProvision.setPendingDevices(ids); final PendingDevice_ProvisionResponse provisionResponse = client .pendingDevice_Provision(pendingDeviceProvision); final BatchResult batchResult = provisionResponse.getPendingDevice_ProvisionResult(); final OperationResult[] provisionResultArr = batchResult.getResults().getOperationResult(); if (provisionResultArr.length == 0) { throw new Exception("There is no result for pendingDevice_Provision."); } final OperationResult result = provisionResultArr[0]; if (result.getSuccess() == false) { final String message = result.getFault() == null ? "" : result.getFault().getMessage(); throw new Exception("Failed to provision device. " + message); } /* Wait for provision complete */ final long idValue = (long) result.getResult(); final Id cvdId = new Id(); cvdId.setIdValue(idValue); waitForAssignmentComplete("DeviceProvisioning", cvdId); } // OS migration flow. public void migrationFlow() throws Exception { final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setPage(1); final Cvd_Query cvdQuery = new Cvd_Query(); cvdQuery.setQueryDefinition(queryDefinition); final Cvd_QueryResponse cvdResponse = client.cvd_Query(cvdQuery); final QueryResult cvdResult = cvdResponse.getCvd_QueryResult(); final Object[] cvdArr = cvdResult.getElements().getAnyType(); if (cvdArr.length == 0) { throw new Exception("There is no result for Cvd_Query"); } final CvdDetails cvd = (CvdDetails) cvdArr[0]; final BaseLayer_Query baseLayerQuery = new BaseLayer_Query(); baseLayerQuery.setQueryDefinition(queryDefinition); final BaseLayer_QueryResponse baseLayerResponse = client.baseLayer_Query(baseLayerQuery); final QueryResult baseLayerResult = baseLayerResponse.getBaseLayer_QueryResult(); final Object[] baseLayerArr = baseLayerResult.getElements().getAnyType(); if (baseLayerArr.length == 0) { throw new Exception("There is no result for baseLayer_Query"); } final LayerDetails baseLayer = (LayerDetails) baseLayerArr[0]; final MachineIdentityInfo machineIdentityInfo = new MachineIdentityInfo(); machineIdentityInfo.setDomainMember(true); machineIdentityInfo.setDomainOrWorkgroupName(DOMAIN); machineIdentityInfo.setUser(USERNAME); machineIdentityInfo.setPassword(PASSWORD); final MigrationTarget migrationTarget = new MigrationTarget(); migrationTarget.setIdentityInfo(machineIdentityInfo); migrationTarget.setCvdId(cvd.getId()); final ArrayOfMigrationTarget migrationTargets = new ArrayOfMigrationTarget(); migrationTargets.addMigrationTarget(migrationTarget); final OsMigration_Begin osMigration_Begin = new OsMigration_Begin(); osMigration_Begin.setMigrationTargets(migrationTargets); osMigration_Begin.setBaseLayerId(baseLayer.getImageId()); osMigration_Begin.setAppLayerIds(null); osMigration_Begin.setIgnoreWarnings(true); final OsMigration_BeginResponse migrationResponse = client.osMigration_Begin(osMigration_Begin); final BatchResult migrationResult = migrationResponse.getOsMigration_BeginResult(); final OperationResult[] results = migrationResult.getResults().getOperationResult(); if (results.length == 0) { throw new Exception("There is no result for osMigration_Begin"); } final OperationResult result = results[0]; if (result.getSuccess() == true) { System.out.println(String.format("Migration begin successfully for Cvd(Id=%d)", cvd.getId().getIdValue())); } else { System.out.println(String.format("Migration begin failed for Cvd(Id=%d), fault is: %s", cvd.getId() .getIdValue(), result.getFault().getMessage())); } /* Wait for migration complete */ waitForAssignmentComplete("Migration", cvd.getId()); } //Cvd assign base layer flow public void cvdAssignBaseLayerFlow() throws Exception { final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setPage(1); final Cvd_Query cvdQuery = new Cvd_Query(); cvdQuery.setQueryDefinition(queryDefinition); final Cvd_QueryResponse cvdResponse = client.cvd_Query(cvdQuery); final QueryResult cvdResult = cvdResponse.getCvd_QueryResult(); final Object[] cvdArr = cvdResult.getElements().getAnyType(); if (cvdArr.length == 0) { throw new Exception("There is no result for Cvd_Query"); } final CvdDetails cvd = (CvdDetails) cvdArr[0]; final BaseLayer_Query baseLayerQuery = new BaseLayer_Query(); baseLayerQuery.setQueryDefinition(queryDefinition); final BaseLayer_QueryResponse baseLayerResponse = client.baseLayer_Query(baseLayerQuery); final QueryResult baseLayerResult = baseLayerResponse.getBaseLayer_QueryResult(); final Object[] baseLayerArr = baseLayerResult.getElements().getAnyType(); if (baseLayerArr.length == 0) { throw new Exception("There is no result for BaseLayer_Query"); } final LayerDetails baseLayer = (LayerDetails) baseLayerArr[0]; /* Assign base layer to the CVD */ final Cvd_AssignBaseLayer cvdAssignBaseLayer = new Cvd_AssignBaseLayer(); final ArrayOfId ids = new ArrayOfId(); ids.addId(cvd.getId()); cvdAssignBaseLayer.setCvdIds(ids); cvdAssignBaseLayer.setBaseLayerImageId(baseLayer.getImageId()); cvdAssignBaseLayer.setIgnoreWarnings(true); final Cvd_AssignBaseLayerResponse assignResponse = client.cvd_AssignBaseLayer(cvdAssignBaseLayer); final BatchResult assignResult = assignResponse.getCvd_AssignBaseLayerResult(); final OperationResult[] results = assignResult.getResults().getOperationResult(); if (results.length == 0) { throw new Exception("There is no result for cvd_AssignBaseLayer"); } final OperationResult result = results[0]; if (result.getSuccess() == true) { System.out.println(String.format("Cvd assign baselayer begin successfully for Cvd(Id=%d)", cvd.getId() .getIdValue())); } else { System.out.println(String.format("Cvd assign baselayer begin failed for Cvd(Id=%d), fault is: %s", cvd .getId().getIdValue(), result.getFault().getMessage())); } /* Wait for base layer assign complete */ waitForAssignmentComplete("AssignBaseImage", cvd.getId()); } //Cvd update app layer flow public void cvdUpdateAppLayerFlow() throws Exception { final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setPage(1); final Cvd_Query cvdQuery = new Cvd_Query(); cvdQuery.setQueryDefinition(queryDefinition); final Cvd_QueryResponse cvdResponse = client.cvd_Query(cvdQuery); final QueryResult cvdResult = cvdResponse.getCvd_QueryResult(); final Object[] cvdArr = cvdResult.getElements().getAnyType(); if (cvdArr.length == 0) { throw new Exception("There is no result for Cvd_Query"); } final CvdDetails cvd = (CvdDetails) cvdArr[0]; final AppLayer_Query appLayerQuery = new AppLayer_Query(); appLayerQuery.setQueryDefinition(queryDefinition); final AppLayer_QueryResponse appLayerResponse = client.appLayer_Query(appLayerQuery); final QueryResult appLayerResult = appLayerResponse.getAppLayer_QueryResult(); final Object[] appLayerArr = appLayerResult.getElements().getAnyType(); if (appLayerArr.length == 0) { throw new Exception("There is no result for AppLayer_Query"); } final LayerDetails appLayer = (LayerDetails) appLayerArr[0]; /*Update Cvd app layer*/ final Cvd_UpdateAppLayer cvdUpdateAppLayer = new Cvd_UpdateAppLayer(); final ArrayOfId ids = new ArrayOfId(); ids.addId(cvd.getId()); cvdUpdateAppLayer.setCvdIds(ids); final ArrayOfImageId appLayerIds = new ArrayOfImageId(); appLayerIds.addImageId(appLayer.getImageId()); cvdUpdateAppLayer.setAddAppLayerImageIds(appLayerIds); cvdUpdateAppLayer.setRemoveAppLayerImageIds(null); cvdUpdateAppLayer.setIgnoreWarnings(true); final Cvd_UpdateAppLayerResponse assignResponse = client.cvd_UpdateAppLayer(cvdUpdateAppLayer); final BatchResult assignResult = assignResponse.getCvd_UpdateAppLayerResult(); final OperationResult[] results = assignResult.getResults().getOperationResult(); if (results.length == 0) { throw new Exception("There is no result for cvd_UpdateAppLayer"); } final OperationResult result = results[0]; if (result.getSuccess() == true) { System.out.println(String.format("Cvd update applayer begin successfully for Cvd(Id=%d)", cvd.getId() .getIdValue())); } else { System.out.println(String.format("Cvd update applayer begin failed for Cvd(Id=%d), fault is: %s", cvd .getId().getIdValue(), result.getFault().getMessage())); } /*Wait for app layer update complete*/ waitForAssignmentComplete("AssignAppLayer", cvd.getId()); } private void waitForAssignmentComplete(final String taskName, final Id cvdId) throws Exception { final QueryFilterEquals taskNameFilter = new QueryFilterEquals(); taskNameFilter.setField(FilterField.ASSIGNMENT_TASK_NAME); taskNameFilter.setValue(taskName); final QueryFilterEquals cvdIdFilter = new QueryFilterEquals(); cvdIdFilter.setField(FilterField.ASSIGNMENT_CVD_ID); cvdIdFilter.setValue(cvdId); final QueryFilterAnd andFilter = new QueryFilterAnd(); final ArrayOfQueryFilter filterArr = new ArrayOfQueryFilter(); filterArr.addQueryFilter(taskNameFilter); filterArr.addQueryFilter(cvdIdFilter); andFilter.setFilters(filterArr); final QueryDefinition queryDefinition = new QueryDefinition(); queryDefinition.setFilter(andFilter); queryDefinition.setPage(1); final Assignment_Query assignmentQuery = new Assignment_Query(); assignmentQuery.setQueryDefinition(queryDefinition); while (true) { final Assignment_QueryResponse assignmentResponse = client.assignment_Query(assignmentQuery); final QueryResult assignmentResult = assignmentResponse.getAssignment_QueryResult(); final Object[] assignmentArr = assignmentResult.getElements().getAnyType(); if (IsAssignmentDone(assignmentArr)) { break; } TimeUnit.MINUTES.sleep(2); } } private boolean IsAssignmentDone(final Object[] assignments) { if (assignments.length == 0) { return false; } final HashSet<String> statusFailed = new HashSet<String>(); statusFailed.add("Cancelled"); statusFailed.add("Rejected"); statusFailed.add("Blocked"); final String statusDone = "Done"; boolean assignmentDone = true; for (final Object assignment : assignments) { final AssignmentDetails assignmentDetails = (AssignmentDetails) assignment; if (statusFailed.contains(assignmentDetails.getStatus())) { System.out.println(String.format("Assignment failed for Cvd(Id=%d), operation failed.", assignmentDetails.getCvdId().getIdValue())); return true; } assignmentDone &= assignmentDetails.getStatus().equals(statusDone); } if (assignmentDone) { System.out.println("Assignment done, operation succeed."); } return assignmentDone; } // Configure client to skip certificate validation and support Http session private void configureClient() throws NoSuchAlgorithmException, KeyManagementException { final SSLContext sslCtx = SSLContext.getInstance("TLS"); sslCtx.init(null, new TrustManager[] { new TrustAllTrustManager() }, null); client._getServiceClient() .getOptions() .setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, new Protocol("https", (ProtocolSocketFactory) new SSLProtocolSocketFactory(sslCtx), 7443)); final HttpState httpState = new HttpState(); client._getServiceClient().getOptions() .setProperty(org.apache.axis2.transport.http.HTTPConstants.CACHED_HTTP_STATE, httpState); } }