// For test. Return the Resource as content that would be transmitted over wire. public ObjectContent getResourceAsMessage(EnterpriseChangeRequest ecr, String user) { return(getOslcClient().GetResourceAsMessage( ecr, OslcMediaType.APPLICATION_RDF_XML, OslcMediaType.APPLICATION_RDF_XML, HandlerSettings.getRESTHeaders(user))); }
// Get and initialize a basic auth client private OslcClient2 getBasicAuthClient(FriendInfo friend) { BasicAuthClient basicClient = null; String exMessage = ""; try { JazzRootServicesHelper2 helper = new JazzRootServicesHelper2( HandlerSettings.ClientUri, HandlerSettings.RootservicesUri); // Specific code - logging in basicClient = new BasicAuthClient(friend.EncodedCredentials); HttpClient client = basicClient.GetHttpClient(); // Get the Creation Factory for mhweb String user = friend.GetBasicAuthUser(); String serviceProviderUrl = basicClient.LookupServiceProviderUrl( helper.GetCatalogUrl(), "mhweb", HandlerSettings.getRESTHeaders(user)); HandlerSettings.CreationFactoryUri = basicClient.LookupCreationFactory( serviceProviderUrl, Constants.ENTERPRISE_CHANGE_MANAGEMENT_DOMAIN, Constants.TYPE_ENTERPRISE_CHANGE_REQUEST, HandlerSettings.getRESTHeaders(user)); } catch (Exception ex) { basicClient = null; exMessage = ex.Message; } if (basicClient == null || exMessage.Length > 0) { HandlerSettings.LogMessage( String.Format( "Failed to get a httpClient for basic auth." + "\nUsing client uri: {0}" + "\nUsing rootservices uri: {1}" + "\nMessage: {2}", HandlerSettings.ClientUri, HandlerSettings.RootservicesUri, exMessage), HandlerSettings.LoggingLevel.ERROR); } return(basicClient); }
public void callUpdateTR(EnterpriseChangeRequest ecr, String user, String expectedState, ref Status status) { String message = null; HttpResponseMessage updateResponse = null; try { String about = ecr.GetAbout().ToString(); updateResponse = getOslcClient().UpdateResource( about, ecr, OslcMediaType.APPLICATION_RDF_XML, OslcMediaType.APPLICATION_RDF_XML, HandlerSettings.getRESTHeaders(user)); message = (updateResponse != null) ? updateResponse.Content.ReadAsStringAsync().Result : "No result when calling " + about; } catch (Exception ex) { HandlerSettings.LogMessage( String.Format("Failed to update ECR: '{0}'", ex.Message), HandlerSettings.LoggingLevel.ERROR); status.ErrorMessage = "Failed to update TR from Bug. Error: '" + ex.Message + "'"; return; } if (updateResponse == null || updateResponse.StatusCode != HttpStatusCode.OK) { HandlerSettings.LogMessage( String.Format("Failed to update ECR. Error from MHWeb: '{0}'", message), HandlerSettings.LoggingLevel.ERROR); // If trying a state change, report as error - otherwise as warning if (expectedState != null) { status.ErrorMessage = "Failed to update TR from Bug. Error from MHWeb: '" + message + "'"; } else { status.WarningMessage = "Warnings when update TR from Bug. Message from MHWeb: '" + message + "'"; } return; } else { // Log the incoming rdf HandlerSettings.LogMessage( String.Format("Response from update:\n{0}", message), HandlerSettings.LoggingLevel.INFO); } // NOTE: MHWeb return an updated item. This is convenient, but not by spec. // Might need an explicit GET here to make more robust if other clients. EnterpriseChangeRequest newEcr = updateResponse.Content. ReadAsAsync <EnterpriseChangeRequest>(getOslcClient().GetFormatters()).Result; String shortState = newEcr.GetStatus(); status.TRState = ECRMapper.getLongTRState(shortState); if (expectedState != null) { // Verify result if we did a state change if (shortState == null || shortState != expectedState) { status.ExpectedStateMessage = String.Format("The ECR is in wrong state: {0} expected: {1}", shortState, expectedState); HandlerSettings.LogMessage(status.ExpectedStateMessage, HandlerSettings.LoggingLevel.WARN); } HandlerSettings.LogMessage( String.Format("The ECR named {0} is updated to state: {1}", newEcr.GetTitle(), status.TRState), HandlerSettings.LoggingLevel.INFO); } else { HandlerSettings.LogMessage( String.Format("The ECR named: {0} is updated", newEcr.GetTitle()), HandlerSettings.LoggingLevel.INFO); } return; }
// ====================================================================================== // REST calls to create or update public void callCreateTR(EnterpriseChangeRequest ecr, String user, ref Status status) { HttpResponseMessage creationResponse = null; String message; try { creationResponse = getOslcClient().CreateResource( HandlerSettings.CreationFactoryUri, ecr, OslcMediaType.APPLICATION_RDF_XML, OslcMediaType.APPLICATION_RDF_XML, HandlerSettings.getRESTHeaders(user)); message = (creationResponse != null) ? creationResponse.Content.ReadAsStringAsync().Result : "No result when calling " + HandlerSettings.CreationFactoryUri; } catch (Exception ex) { HandlerSettings.LogMessage( String.Format("Failed to create ECR: '{0}'", ex.Message), HandlerSettings.LoggingLevel.ERROR); status.ErrorMessage = "Failed to create TR from Bug. Error: '" + ex.Message + "'"; return; } if (creationResponse == null || creationResponse.StatusCode != HttpStatusCode.Created) { HandlerSettings.LogMessage( String.Format("Failed to create ECR. Error from MHWeb: '{0}'", message), HandlerSettings.LoggingLevel.ERROR); status.ErrorMessage = "Failed to create TR from Bug. Error from MHWeb: '" + message + "'"; return; } else { // Log the incoming rdf HandlerSettings.LogMessage( String.Format("Response from create:\n{0}", message), HandlerSettings.LoggingLevel.INFO); } EnterpriseChangeRequest newEcr = creationResponse.Content. ReadAsAsync <EnterpriseChangeRequest>(getOslcClient().GetFormatters()).Result; status.TRAbout = newEcr.GetAbout(); String shortState = newEcr.GetStatus(); status.TRState = ECRMapper.getLongTRState(shortState); HandlerSettings.LogMessage( String.Format("ECR named {0} created a location: {1}", newEcr.GetTitle(), status.TRAbout), HandlerSettings.LoggingLevel.INFO); // Verify result if (shortState == null || shortState != ECRMapper.TR_STATE_PRIVATE_S) { status.ExpectedStateMessage = String.Format("Created ECR in wrong state: {0} expected: PR", shortState); HandlerSettings.LogMessage(status.ExpectedStateMessage, HandlerSettings.LoggingLevel.WARN); } return; }