| 501 | | addQueryParameter(queryParamBuilder, "repoID", doc.getRepositoryName(), |
|---|
| 502 | | false); |
|---|
| 503 | | addQueryParameter(queryParamBuilder, "docRef", doc.getRef().toString(), |
|---|
| 504 | | false); |
|---|
| 505 | | addQueryParameter(queryParamBuilder, "schema", schemaName, false); |
|---|
| 506 | | addQueryParameter(queryParamBuilder, "blobField", blobFieldName, false); |
|---|
| 507 | | addQueryParameter(queryParamBuilder, "filenameField", |
|---|
| | 506 | addQueryParameter(queryParamBuilder, LiveEditConstants.REPO_ID, |
|---|
| | 507 | doc.getRepositoryName(), false); |
|---|
| | 508 | addQueryParameter(queryParamBuilder, LiveEditConstants.DOC_REF, |
|---|
| | 509 | doc.getRef().toString(), false); |
|---|
| | 510 | addQueryParameter(queryParamBuilder, LiveEditConstants.SCHEMA, |
|---|
| | 511 | schemaName, false); |
|---|
| | 512 | addQueryParameter(queryParamBuilder, LiveEditConstants.BLOB_FIELD, |
|---|
| | 513 | blobFieldName, false); |
|---|
| | 514 | addQueryParameter(queryParamBuilder, LiveEditConstants.FILENAME_FIELD, |
|---|
| 546 | | addQueryParameter(queryParamBuilder, "mimetype", mimetype, false); |
|---|
| 547 | | addQueryParameter(queryParamBuilder, "schema", schemaName, false); |
|---|
| 548 | | addQueryParameter(queryParamBuilder, "blobField", blobFieldName, false); |
|---|
| 549 | | addQueryParameter(queryParamBuilder, "filenameField", |
|---|
| | 552 | addQueryParameter(queryParamBuilder, LiveEditConstants.MIMETYPE, |
|---|
| | 553 | mimetype, false); |
|---|
| | 554 | addQueryParameter(queryParamBuilder, LiveEditConstants.SCHEMA, |
|---|
| | 555 | schemaName, false); |
|---|
| | 556 | addQueryParameter(queryParamBuilder, LiveEditConstants.BLOB_FIELD, |
|---|
| | 557 | blobFieldName, false); |
|---|
| | 558 | addQueryParameter(queryParamBuilder, LiveEditConstants.FILENAME_FIELD, |
|---|
| 599 | | addQueryParameter(queryParamBuilder, "templateBlobField", |
|---|
| 600 | | templateBlobFieldName, false); |
|---|
| 601 | | addQueryParameter(queryParamBuilder, "schema", schemaName, false); |
|---|
| 602 | | addQueryParameter(queryParamBuilder, "blobField", blobFieldName, false); |
|---|
| 603 | | addQueryParameter(queryParamBuilder, "filenameField", |
|---|
| | 611 | addQueryParameter(queryParamBuilder, |
|---|
| | 612 | LiveEditConstants.TEMPLATE_BLOB_FIELD, templateBlobFieldName, |
|---|
| | 613 | false); |
|---|
| | 614 | addQueryParameter(queryParamBuilder, LiveEditConstants.SCHEMA, |
|---|
| | 615 | schemaName, false); |
|---|
| | 616 | addQueryParameter(queryParamBuilder, LiveEditConstants.BLOB_FIELD, |
|---|
| | 617 | blobFieldName, false); |
|---|
| | 618 | addQueryParameter(queryParamBuilder, LiveEditConstants.FILENAME_FIELD, |
|---|
| 605 | | addQueryParameter(queryParamBuilder, "docType", docType, false); |
|---|
| 606 | | return buildEncodedUrl(queryParamBuilder); |
|---|
| 607 | | } |
|---|
| 608 | | |
|---|
| 609 | | private static String buildEncodedUrl(StringBuilder queryParamBuilder) |
|---|
| | 620 | addQueryParameter(queryParamBuilder, LiveEditConstants.DOC_TYPE, |
|---|
| | 621 | docType, false); |
|---|
| | 622 | return buildNxEditUrl(queryParamBuilder.toString()); |
|---|
| | 623 | } |
|---|
| | 624 | |
|---|
| | 625 | private static String buildNxEditUrl(String queryParameters) |
|---|
| 614 | | sb.append(composeBaseURL(request)); |
|---|
| 615 | | queryParamBuilder.append(composeTailURL(request)); |
|---|
| 616 | | String queryParams = queryParamBuilder.toString(); |
|---|
| 617 | | try { |
|---|
| 618 | | // do not encode the nxedit:// part since URLEncoder will not handle |
|---|
| 619 | | // it correctly |
|---|
| 620 | | |
|---|
| 621 | | // TODO: OG: disable URLEncoding for now since it breaks FF for some |
|---|
| 622 | | // reason (more investigation required) |
|---|
| 623 | | // queryParams = URLEncoder.encode(queryParams, URL_ENCODE_CHARSET); |
|---|
| 624 | | sb.append(queryParams); |
|---|
| 625 | | return sb.toString(); |
|---|
| 626 | | } catch (Exception e) { |
|---|
| 627 | | throw new ClientException("failed to encode nxedit URL", e); |
|---|
| 628 | | } |
|---|
| 629 | | } |
|---|
| 630 | | |
|---|
| 631 | | /** |
|---|
| 632 | | * Build the base nxedit:* url based on the current URL from the servlet |
|---|
| 633 | | * request context |
|---|
| 634 | | * |
|---|
| 635 | | * @param request the current HttpServletRequest request |
|---|
| 636 | | * @return a raw nxedit string url with the current server name, port and |
|---|
| 637 | | * URL prefix |
|---|
| 638 | | */ |
|---|
| 639 | | private static String composeBaseURL(HttpServletRequest request) { |
|---|
| 640 | | String baseURL = BaseURL.getBaseURL(request); |
|---|
| 641 | | |
|---|
| 642 | | if (baseURL.contains("http://")) { |
|---|
| 643 | | baseURL = baseURL.replace("http://", NXEDIT_URL_SCHEME + "://"); |
|---|
| 644 | | } else if (baseURL.contains("https://")) { |
|---|
| 645 | | baseURL = baseURL.replace("https://", NXEDIT_URL_SCHEME + "://"); |
|---|
| 646 | | } else { |
|---|
| 647 | | // fallback that should never happen: raise an exception instead? |
|---|
| 648 | | baseURL = NXEDIT_URL_SCHEME + "://" + baseURL; |
|---|
| 649 | | } |
|---|
| 650 | | return baseURL.concat(NXEDIT_URL_VIEW_ID); |
|---|
| | 629 | |
|---|
| | 630 | // build the URL prefix by concatenating nxedit: scheme with the http:// |
|---|
| | 631 | // or https:// base URL from the current request context and the |
|---|
| | 632 | // LiveEditBoostrapHelper JSF view |
|---|
| | 633 | StringBuilder nxeditUrlBuilder = new StringBuilder(NXEDIT_URL_SCHEME); |
|---|
| | 634 | nxeditUrlBuilder.append(":"); |
|---|
| | 635 | nxeditUrlBuilder.append(BaseURL.getBaseURL(request)); |
|---|
| | 636 | nxeditUrlBuilder.append(NXEDIT_URL_VIEW_ID); |
|---|
| | 637 | |
|---|
| | 638 | // add the query parameters them selves |
|---|
| | 639 | nxeditUrlBuilder.append(queryParameters); |
|---|
| | 640 | |
|---|
| | 641 | // add seam conversation and JSESSION ids |
|---|
| | 642 | addQueryParameter(nxeditUrlBuilder, |
|---|
| | 643 | Manager.instance().getConversationIdParameter(), |
|---|
| | 644 | Manager.instance().getCurrentConversationId(), false); |
|---|
| | 645 | addQueryParameter(nxeditUrlBuilder, JSESSIONID, |
|---|
| | 646 | extractJSessionId(request), false); |
|---|
| | 647 | return nxeditUrlBuilder.toString(); |
|---|
| 666 | | } |
|---|
| 667 | | |
|---|
| 668 | | /** |
|---|
| 669 | | * Extract conversation and session ids and build a query parameters string |
|---|
| 670 | | * |
|---|
| 671 | | * @param request the current HttpServletRequest request |
|---|
| 672 | | * @return the query parameter string |
|---|
| 673 | | */ |
|---|
| 674 | | private static String composeTailURL(HttpServletRequest request) { |
|---|
| 675 | | StringBuilder sb = new StringBuilder(); |
|---|
| 676 | | addQueryParameter(sb, Manager.instance().getConversationIdParameter(), |
|---|
| 677 | | Manager.instance().getCurrentConversationId(), false); |
|---|
| 678 | | addQueryParameter(sb, JSESSIONID, extractJSessionId(request), false); |
|---|
| 679 | | return sb.toString(); |
|---|