/* * TODO: This is a first pass at filtering the properties that are set on the * RequestContext. Right now it's called during the invoke, but needs to be * moved over to when the property is set. This should not be in the path * of performance. */ private void setupProperties(MessageContext mc) { // , Options ops) { // Enable MTOM Message msg = mc.getMessage(); if (msg.isMTOMEnabled()) { mc.setProperty(Configuration.ENABLE_MTOM, "true"); } // Enable session management if (mc.isMaintainSession()) { mc.getAxisMessageContext().getOptions().setManageSession(true); } // Check to see if BASIC_AUTH is enabled. If so, make sure // the properties are setup correctly. if (mc.containsKey(BindingProvider.USERNAME_PROPERTY) || mc.containsKey(BindingProvider.PASSWORD_PROPERTY)) { String userId = (String) mc.getProperty(BindingProvider.USERNAME_PROPERTY); if (userId == null || userId == "") { throw ExceptionFactory.makeWebServiceException(Messages.getMessage("checkUserName")); } String password = null; if (mc.containsKey(BindingProvider.PASSWORD_PROPERTY)) { password = (String) mc.getProperty(BindingProvider.PASSWORD_PROPERTY); } URL url = null; try { url = new URL((String) mc.getProperty(BindingProvider.ENDPOINT_ADDRESS_PROPERTY)); } catch (MalformedURLException e) { throw ExceptionFactory.makeWebServiceException(e); } HttpTransportProperties.Authenticator basicAuthentication = new HttpTransportProperties.Authenticator(); basicAuthentication.setUsername(userId); basicAuthentication.setPassword(password); basicAuthentication.setHost(url.getHost()); basicAuthentication.setPort(url.getPort()); basicAuthentication.setPreemptiveAuthentication(true); mc.setProperty(HTTPConstants.AUTHENTICATE, basicAuthentication); } }
@Override public void execute(WorkflowDTO workflowDTO) throws WorkflowException { if (log.isDebugEnabled()) { log.info("Executing Application creation Workflow.."); } super.execute(workflowDTO); try { ServiceClient client = new ServiceClient( ServiceReferenceHolder.getContextService().getClientConfigContext(), null); Options options = new Options(); options.setAction("http://workflow.application.apimgt.carbon.wso2.org/initiate"); options.setTo(new EndpointReference(serviceEndpoint)); if (contentType != null) { options.setProperty(Constants.Configuration.MESSAGE_TYPE, contentType); } else { options.setProperty( Constants.Configuration.MESSAGE_TYPE, HTTPConstants.MEDIA_TYPE_APPLICATION_XML); } HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator(); if (username != null && password != null) { auth.setUsername(username); auth.setPassword(password); auth.setPreemptiveAuthentication(true); List<String> authSchemes = new ArrayList<String>(); authSchemes.add(HttpTransportProperties.Authenticator.BASIC); auth.setAuthSchemes(authSchemes); options.setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE, auth); options.setManageSession(true); } client.setOptions(options); String payload = "<wor:ApplicationApprovalWorkFlowProcessRequest xmlns:wor=\"http://workflow.application.apimgt.carbon.wso2.org\">\n" + " <wor:applicationName>$1</wor:applicationName>\n" + " <wor:applicationTier>$2</wor:applicationTier>\n" + " <wor:applicationCallbackUrl>$3</wor:applicationCallbackUrl>\n" + " <wor:applicationDescription>$4</wor:applicationDescription>\n" + " <wor:tenantDomain>$5</wor:tenantDomain>\n" + " <wor:userName>$6</wor:userName>\n" + " <wor:workflowExternalRef>$7</wor:workflowExternalRef>\n" + " <wor:callBackURL>$8</wor:callBackURL>\n" + " </wor:ApplicationApprovalWorkFlowProcessRequest>"; ApplicationWorkflowDTO appWorkFlowDTO = (ApplicationWorkflowDTO) workflowDTO; Application application = appWorkFlowDTO.getApplication(); String callBackURL = appWorkFlowDTO.getCallbackUrl(); payload = payload.replace("$1", application.getName()); payload = payload.replace("$2", application.getTier()); payload = payload.replace("$3", application.getCallbackUrl()); payload = payload.replace("$4", application.getDescription()); payload = payload.replace("$5", appWorkFlowDTO.getTenantDomain()); payload = payload.replace("$6", appWorkFlowDTO.getUserName()); payload = payload.replace("$7", appWorkFlowDTO.getExternalWorkflowReference()); payload = payload.replace("$8", callBackURL != null ? callBackURL : "?"); client.fireAndForget(AXIOMUtil.stringToOM(payload)); } catch (AxisFault axisFault) { log.error("Error sending out message", axisFault); throw new WorkflowException("Error sending out message", axisFault); } catch (XMLStreamException e) { log.error("Error converting String to OMElement", e); throw new WorkflowException("Error converting String to OMElement", e); } }