protected void fillXML(final Document document, final Element xmlRequest, final Request theRequest) { xmlRequest.setAttribute(XML_ATTR_METHOD, theRequest.getHttpMethod().toString()); theRequest.getContentType().ifPresent(c -> xmlRequest.setAttribute(XML_ATTR_CONTENT_TYPE, c)); theRequest.getServer().ifPresent(server -> xmlRequest.setAttribute(XML_ATTR_SERV_UID, server.getName())); xmlRequest.setAttribute(XML_ATTR_ACTION_TYPE, String.valueOf(getActionType())); theRequest.getPath().ifPresent(path -> xmlRequest.setAttribute(XML_ATTR_PATH, path)); theRequest.getExtractors().forEach(extractElem -> ExtractorWriter.of(extractElem).writeXML(document, xmlRequest)); writeValidationSection(theRequest, document, xmlRequest); writeParameters(theRequest, document, xmlRequest); theRequest.getHeaders().forEach(header -> HeaderWriter.writeXML(document, xmlRequest, header)); }
public void writeParameters(final Request request, final Document document, Element xmlRequest) { request.getParameters().forEach(paramElem -> ParameterWriter.of(paramElem).writeXML(document, xmlRequest, Optional.empty())); }
private static void writeRecordedFiles(final Request request, final Document document, final Element xmlRequest, final String outputFolder) { //Request content final String requestBodyFile = request.getRecordedFiles().flatMap(RecordedFiles::recordedRequestBodyFile).orElse(null); final String requestHeaderFile = request.getRecordedFiles().flatMap(RecordedFiles::recordedRequestHeaderFile).orElse(null); if (!isNullOrEmpty(requestBodyFile) || !isNullOrEmpty(requestHeaderFile) ) { final Element element = document.createElement(XML_TAG_RECORDED_REQUEST); final boolean copied = copyRequestContent(outputFolder, element, requestHeaderFile, requestBodyFile); if (copied) { xmlRequest.appendChild(element); } } //Response header final String responseHeaderFile = request.getRecordedFiles().flatMap(RecordedFiles::recordedResponseHeaderFile).orElse(null); if (!isNullOrEmpty(responseHeaderFile)) { writeRecordedResponseHeaders(responseHeaderFile, document, xmlRequest); } //Response body final String responseBodyFile = request.getRecordedFiles().flatMap(RecordedFiles::recordedResponseBodyFile).orElse(null); if (!isNullOrEmpty(responseBodyFile)) { final Element element = document.createElement(XML_TAG_RECORDED_RESPONSE); final boolean copied = copyResponseBody(outputFolder, element, responseBodyFile); if (copied) { xmlRequest.appendChild(element); } } }
@Override protected void fillXML(final Document document, final Element xmlRequest, final Request theRequest) { super.fillXML(document, xmlRequest, theRequest); final PostSubmitFormRequest postSubmitFormRequest = (PostSubmitFormRequest)theRequest; xmlRequest.setAttribute(XML_ATTR_LINKEXTRACTORTYPE, ACTION_LINKEXTRACTOR_TYPE_MATCH_DEFINITION); xmlRequest.setAttribute(XML_ATTR_EXTRACTORPATH, theRequest.getPath().orElse(theRequest.getName())); xmlRequest.setAttribute(XML_ATTR_CONF_FORM_EXTRACTOR_PARAMETERS, buildConfFormExtractorParameters(postSubmitFormRequest)); final Element recordHtmlInfos = document.createElement(XML_TAG_RECORD_HTML_INFOS); recordHtmlInfos.setAttribute(XML_ATTR_EXTRACTOR_REGEXP, "false"); recordHtmlInfos.setAttribute(XML_ATTR_EXTRACTOR_OCCURENCE, "1"); recordHtmlInfos.setAttribute(XML_ATTR_HTML_TYPE, "2"); xmlRequest.appendChild(recordHtmlInfos); final Element extractorHtmlInfos = document.createElement(XML_TAG_EXTRACTOR_HTML_INFOS); extractorHtmlInfos.setAttribute(XML_ATTR_EXTRACTOR_REGEXP, "false"); extractorHtmlInfos.setAttribute(XML_ATTR_EXTRACTOR_OCCURENCE, "1"); extractorHtmlInfos.setAttribute(XML_ATTR_HTML_TYPE, "2"); xmlRequest.appendChild(extractorHtmlInfos); final Request referer = postSubmitFormRequest.getReferer(); xmlRequest.setAttribute(XML_ATTR_REFERER_UID, WriterUtils.getElementUid(referer)); theRequest.getServer().ifPresent(server -> xmlRequest.setAttribute(XML_ATTR_SERV_UID, server.getName())); theRequest.getServer().ifPresent(server -> xmlRequest.setAttribute(XML_ATTR_EXTRACTOR_SERVER_UID, server.getName())); }
private void from(Object object) { if (object instanceof Request) { Request instance = (Request) object; Optional<String> pathOptional = instance.getPath(); if (pathOptional.isPresent()) { path(pathOptional); Optional<Server> serverOptional = instance.getServer(); if (serverOptional.isPresent()) { server(serverOptional); addAllHeaders(instance.getHeaders()); addAllExtractors(instance.getExtractors()); addAllValidators(instance.getValidators()); Optional<RecordedFiles> recordedFilesOptional = instance.getRecordedFiles(); if (recordedFilesOptional.isPresent()) { recordedFiles(recordedFilesOptional); httpMethod(instance.getHttpMethod()); addAllParameters(instance.getParameters()); Optional<String> contentTypeOptional = instance.getContentType(); if (contentTypeOptional.isPresent()) { contentType(contentTypeOptional);
/** * Generate an immutable request of type Submit form */ @VisibleForTesting protected static PostSubmitFormRequest buildPostSubmitFormRequest(final LoadRunnerVUVisitor visitor, final MethodCall method, final String name) { final Optional<Properties> snapshotProperties = getSnapshotProperties(visitor, method); final Optional<RecordedFiles> recordedFiles = getRecordedFilesFromSnapshotProperties(visitor, snapshotProperties); final List<Header> recordedHeaders = getHeadersFromRecordedFile(recordedFiles.flatMap(RecordedFiles::recordedRequestHeaderFile)); final ImmutablePostSubmitFormRequest.Builder requestBuilder = ImmutablePostSubmitFormRequest.builder() .name(name) .path(name) .httpMethod(Request.HttpMethod.POST) .recordedFiles(recordedFiles); getContentType(snapshotProperties).ifPresent(requestBuilder::contentType); requestBuilder.addAllExtractors(visitor.getCurrentExtractors()); requestBuilder.addAllValidators(visitor.getCurrentValidators()); requestBuilder.addAllHeaders(visitor.getCurrentHeaders()); visitor.getCurrentHeaders().clear(); requestBuilder.addAllHeaders(visitor.getGlobalHeaders()); requestBuilder.addAllHeaders(recordedHeaders); visitor.getCurrentRequest().ifPresent(requestBuilder::referer); visitor.getCurrentRequest().ifPresent(cr -> requestBuilder.server(cr.getServer())); requestBuilder.path(buildExtractorPath(snapshotProperties)); MethodUtils.extractItemListAsStringList(visitor, method.getParameters(), ITEMDATA, Optional.empty()) .ifPresent(stringList -> buildPostParamsFromExtract(stringList).forEach(requestBuilder::addPostParameters)); return requestBuilder.build(); }
private static void writeValidationSection(final Request request, final Document document, Element xmlRequest) { if (request.getValidators().isEmpty()) return; Element xmlAssertBloc = document.createElement(XML_ATTR_ASSERT_BLOC); request.getValidators().forEach(validElem -> ValidatorWriter.getWriterFor(validElem).writeXML(document, xmlAssertBloc)); xmlRequest.appendChild(xmlAssertBloc); }
Optional<String> pathOptional = instance.getPath(); if (pathOptional.isPresent()) { path(pathOptional); Optional<Server> serverOptional = instance.getServer(); if (serverOptional.isPresent()) { server(serverOptional); addAllHeaders(instance.getHeaders()); addAllExtractors(instance.getExtractors()); addAllValidators(instance.getValidators()); Optional<RecordedFiles> recordedFilesOptional = instance.getRecordedFiles(); if (recordedFilesOptional.isPresent()) { recordedFiles(recordedFilesOptional); httpMethod(instance.getHttpMethod()); addAllParameters(instance.getParameters()); Optional<String> contentTypeOptional = instance.getContentType(); if (contentTypeOptional.isPresent()) { contentType(contentTypeOptional);
@Override protected void fillXML(final Document document, final Element xmlRequest, final Request theRequest) { super.fillXML(document, xmlRequest, theRequest); final GetFollowLinkRequest getFollowLinkRequest = (GetFollowLinkRequest)theRequest; xmlRequest.setAttribute(XML_ATTR_LINKEXTRACTORTYPE, ACTION_LINKEXTRACTOR_TYPE_MATCHCONTENT); xmlRequest.setAttribute(XML_ATTR_EXTRACTORPATH, theRequest.getPath().orElse(theRequest.getName())); final Element recordHtmlInfos = document.createElement(XML_TAG_RECORD_HTML_INFOS); recordHtmlInfos.setAttribute(XML_ATTR_EXTRACTOR_CONTENT, getFollowLinkRequest.getText()); recordHtmlInfos.setAttribute(XML_ATTR_EXTRACTOR_OCCURENCE, "1"); recordHtmlInfos.setAttribute(XML_ATTR_HTML_TYPE, "1"); xmlRequest.appendChild(recordHtmlInfos); final Element extractorHtmlInfos = document.createElement(XML_TAG_EXTRACTOR_HTML_INFOS); extractorHtmlInfos.setAttribute(XML_ATTR_EXTRACTOR_CONTENT, getFollowLinkRequest.getText()); extractorHtmlInfos.setAttribute(XML_ATTR_EXTRACTOR_OCCURENCE, "1"); extractorHtmlInfos.setAttribute(XML_ATTR_HTML_TYPE, "1"); xmlRequest.appendChild(extractorHtmlInfos); final Request referer = getFollowLinkRequest.getReferer(); xmlRequest.setAttribute(XML_ATTR_REFERER_UID, WriterUtils.getElementUid(referer)); theRequest.getServer().ifPresent(server -> xmlRequest.setAttribute(XML_ATTR_SERV_UID, server.getName())); theRequest.getServer().ifPresent(server -> xmlRequest.setAttribute(XML_ATTR_EXTRACTOR_SERVER_UID, server.getName())); } }
/** * Generate an immutable request of type Follow link */ @VisibleForTesting protected static GetFollowLinkRequest buildGetFollowLinkRequest(final LoadRunnerVUVisitor visitor, final MethodCall method, final String name, final String textFollowLink) { final Optional<Properties> snapshotProperties = getSnapshotProperties(visitor, method); final Optional<RecordedFiles> recordedFiles = getRecordedFilesFromSnapshotProperties(visitor, snapshotProperties); final List<Header> recordedHeaders = getHeadersFromRecordedFile(recordedFiles.flatMap(RecordedFiles::recordedRequestHeaderFile)); final ImmutableGetFollowLinkRequest.Builder requestBuilder = ImmutableGetFollowLinkRequest.builder() .name(name) .path(name) .text(textFollowLink) .httpMethod(Request.HttpMethod.GET) .recordedFiles(recordedFiles); getContentType(snapshotProperties).ifPresent(requestBuilder::contentType); requestBuilder.addAllExtractors(visitor.getCurrentExtractors()); requestBuilder.addAllValidators(visitor.getCurrentValidators()); requestBuilder.addAllHeaders(visitor.getCurrentHeaders()); visitor.getCurrentHeaders().clear(); requestBuilder.addAllHeaders(visitor.getGlobalHeaders()); requestBuilder.addAllHeaders(recordedHeaders); visitor.getCurrentRequest().ifPresent(requestBuilder::referer); visitor.getCurrentRequest().ifPresent(cr -> requestBuilder.server(cr.getServer())); requestBuilder.path(buildExtractorPath(snapshotProperties)); return requestBuilder.build(); }
Optional<Server> serverOptional = instance.getServer(); if (serverOptional.isPresent()) { server(serverOptional); addAllHeaders(instance.getHeaders()); Optional<String> pathOptional = instance.getPath(); if (pathOptional.isPresent()) { path(pathOptional); addAllExtractors(instance.getExtractors()); addAllValidators(instance.getValidators()); Optional<RecordedFiles> recordedFilesOptional = instance.getRecordedFiles(); if (recordedFilesOptional.isPresent()) { recordedFiles(recordedFilesOptional); httpMethod(instance.getHttpMethod()); addAllParameters(instance.getParameters()); Optional<String> contentTypeOptional = instance.getContentType(); if (contentTypeOptional.isPresent()) { contentType(contentTypeOptional);
@Override public void writeParameters(final Request request, final Document document, Element xmlRequest) { request.getParameters().forEach(paramElem -> ParameterWriter.of(paramElem).writeXML(document, xmlRequest, Optional.of(XML_URL_PARAMETER_TAG_NAME))); ((PostRequest)request).getPostParameters().forEach(paramElem -> ParameterWriter.of(paramElem).writeXML(document, xmlRequest, Optional.empty())); }
Optional<Server> serverOptional = instance.getServer(); if (serverOptional.isPresent()) { server(serverOptional); addAllHeaders(instance.getHeaders()); Optional<String> pathOptional = instance.getPath(); if (pathOptional.isPresent()) { path(pathOptional); addAllExtractors(instance.getExtractors()); addAllValidators(instance.getValidators()); Optional<RecordedFiles> recordedFilesOptional = instance.getRecordedFiles(); if (recordedFilesOptional.isPresent()) { recordedFiles(recordedFilesOptional); httpMethod(instance.getHttpMethod()); addAllParameters(instance.getParameters()); Optional<String> contentTypeOptional = instance.getContentType(); if (contentTypeOptional.isPresent()) { contentType(contentTypeOptional);
Optional<Server> serverOptional = instance.getServer(); if (serverOptional.isPresent()) { server(serverOptional); addAllHeaders(instance.getHeaders()); Optional<String> pathOptional = instance.getPath(); if (pathOptional.isPresent()) { path(pathOptional); addAllExtractors(instance.getExtractors()); addAllValidators(instance.getValidators()); Optional<RecordedFiles> recordedFilesOptional = instance.getRecordedFiles(); if (recordedFilesOptional.isPresent()) { recordedFiles(recordedFilesOptional); httpMethod(instance.getHttpMethod()); addAllParameters(instance.getParameters()); Optional<String> contentTypeOptional = instance.getContentType(); if (contentTypeOptional.isPresent()) { contentType(contentTypeOptional);
Optional<Server> serverOptional = instance.getServer(); if (serverOptional.isPresent()) { server(serverOptional); addAllHeaders(instance.getHeaders()); Optional<String> pathOptional = instance.getPath(); if (pathOptional.isPresent()) { path(pathOptional); addAllExtractors(instance.getExtractors()); addAllValidators(instance.getValidators()); Optional<RecordedFiles> recordedFilesOptional = instance.getRecordedFiles(); if (recordedFilesOptional.isPresent()) { recordedFiles(recordedFilesOptional); httpMethod(instance.getHttpMethod()); addAllParameters(instance.getParameters()); Optional<String> contentTypeOptional = instance.getContentType(); if (contentTypeOptional.isPresent()) { contentType(contentTypeOptional);
Optional<Server> serverOptional = instance.getServer(); if (serverOptional.isPresent()) { server(serverOptional); addAllHeaders(instance.getHeaders()); Optional<String> pathOptional = instance.getPath(); if (pathOptional.isPresent()) { path(pathOptional); addAllExtractors(instance.getExtractors()); addAllValidators(instance.getValidators()); Optional<RecordedFiles> recordedFilesOptional = instance.getRecordedFiles(); if (recordedFilesOptional.isPresent()) { recordedFiles(recordedFilesOptional); httpMethod(instance.getHttpMethod()); addAllParameters(instance.getParameters()); Optional<String> contentTypeOptional = instance.getContentType(); if (contentTypeOptional.isPresent()) { contentType(contentTypeOptional);