diff --git a/pom.xml b/pom.xml index b3237e00879..6c1bdc3cbce 100644 --- a/pom.xml +++ b/pom.xml @@ -277,7 +277,7 @@ org.primefaces primefaces - 6.2 + 7.0 org.primefaces.themes diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index 8b546a037d2..7dfd165ead6 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -82,7 +82,7 @@ import org.primefaces.model.UploadedFile; import javax.validation.ConstraintViolation; import org.apache.commons.httpclient.HttpClient; -import org.primefaces.context.RequestContext; +//import org.primefaces.context.RequestContext; import java.util.Arrays; import java.util.HashSet; import javax.faces.model.SelectItem; @@ -1039,8 +1039,8 @@ public boolean showComputeButton(FileMetadata metadata) { public boolean canComputeAllFiles(boolean isCartCompute){ for (FileMetadata fmd : workingVersion.getFileMetadatas()) { if (!fileDownloadHelper.canDownloadFile(fmd)) { - RequestContext requestContext = RequestContext.getCurrentInstance(); - requestContext.execute("PF('computeInvalid').show()"); + //RequestContext requestContext = RequestContext.getCurrentInstance(); + PrimeFaces.current().executeScript("PF('computeInvalid').show()"); return false; } } @@ -2805,8 +2805,8 @@ public void validateFilesForDownload(boolean guestbookRequired, boolean download setSelectedNonDownloadableFiles(new ArrayList<>()); if (this.selectedFiles.isEmpty()) { - RequestContext requestContext = RequestContext.getCurrentInstance(); - requestContext.execute("PF('selectFilesForDownload').show()"); + //RequestContext requestContext = RequestContext.getCurrentInstance(); + PrimeFaces.current().executeScript("PF('selectFilesForDownload').show()"); return; } for (FileMetadata fmd : this.selectedFiles){ @@ -2821,8 +2821,8 @@ public void validateFilesForDownload(boolean guestbookRequired, boolean download // list, and NONE of the files are left on the downloadable list // - we show them a "you're out of luck" popup: if(getSelectedDownloadableFiles().isEmpty() && !getSelectedNonDownloadableFiles().isEmpty()){ - RequestContext requestContext = RequestContext.getCurrentInstance(); - requestContext.execute("PF('downloadInvalid').show()"); + //RequestContext requestContext = RequestContext.getCurrentInstance(); + PrimeFaces.current().executeScript("PF('downloadInvalid').show()"); return; } @@ -2858,8 +2858,8 @@ public void validateFilesForDownload(boolean guestbookRequired, boolean download // we are showing them this "you are somewhat in luck" popup; that will // then direct them to the download, or popup, as needed: if(!getSelectedDownloadableFiles().isEmpty() && !getSelectedNonDownloadableFiles().isEmpty()){ - RequestContext requestContext = RequestContext.getCurrentInstance(); - requestContext.execute("PF('downloadMixed').show()"); + //RequestContext requestContext = RequestContext.getCurrentInstance(); + PrimeFaces.current().executeScript("PF('downloadMixed').show()"); } } @@ -3031,9 +3031,9 @@ public boolean isShowAccessPopup() { public void setShowAccessPopup(boolean showAccessPopup) {} // dummy set method public String testSelectedFilesForRestrict(){ - RequestContext requestContext = RequestContext.getCurrentInstance(); + //RequestContext requestContext = RequestContext.getCurrentInstance(); if (selectedFiles.isEmpty()) { - requestContext.execute("PF('selectFilesForRestrict').show()"); + PrimeFaces.current().executeScript("PF('selectFilesForRestrict').show()"); return ""; } else { boolean validSelection = true; @@ -3044,11 +3044,11 @@ public String testSelectedFilesForRestrict(){ } } if (!validSelection) { - requestContext.execute("PF('selectFilesForRestrict').show()"); + PrimeFaces.current().executeScript("PF('selectFilesForRestrict').show()"); return ""; } testSelectedFilesForMapData(); - requestContext.execute("PF('accessPopup').show()"); + PrimeFaces.current().executeScript("PF('accessPopup').show()"); return ""; } } @@ -3056,12 +3056,12 @@ public String testSelectedFilesForRestrict(){ public String restrictSelectedFiles(boolean restricted) throws CommandException{ - RequestContext requestContext = RequestContext.getCurrentInstance(); + //RequestContext requestContext = RequestContext.getCurrentInstance(); if (selectedFiles.isEmpty()) { if (restricted) { - requestContext.execute("PF('selectFilesForRestrict').show()"); + PrimeFaces.current().executeScript("PF('selectFilesForRestrict').show()"); } else { - requestContext.execute("PF('selectFilesForUnRestrict').show()"); + PrimeFaces.current().executeScript("PF('selectFilesForUnRestrict').show()"); } return ""; } else { @@ -3074,10 +3074,10 @@ public String restrictSelectedFiles(boolean restricted) throws CommandException{ } if (!validSelection) { if (restricted) { - requestContext.execute("PF('selectFilesForRestrict').show()"); + PrimeFaces.current().executeScript("PF('selectFilesForRestrict').show()"); } if (!restricted) { - requestContext.execute("PF('selectFilesForUnRestrict').show()"); + PrimeFaces.current().executeScript("PF('selectFilesForUnRestrict').show()"); } return ""; } @@ -3858,8 +3858,8 @@ public void setDownloadType(String downloadType) { public void openDownloadPopupForMultipleFileDownload() { if (this.selectedFiles.isEmpty()) { - RequestContext requestContext = RequestContext.getCurrentInstance(); - requestContext.execute("PF('selectFilesForDownload').show()"); + //RequestContext requestContext = RequestContext.getCurrentInstance(); + PrimeFaces.current().executeScript("PF('selectFilesForDownload').show()"); return; } @@ -3869,8 +3869,8 @@ public void openDownloadPopupForMultipleFileDownload() { // that's the case. -- L.A. this.guestbookResponse.setDownloadtype("Download"); - RequestContext requestContext = RequestContext.getCurrentInstance(); - requestContext.execute("PF('downloadPopup').show();handleResizeDialog('downloadPopup');"); + //RequestContext requestContext = RequestContext.getCurrentInstance(); + PrimeFaces.current().executeScript("PF('downloadPopup').show();handleResizeDialog('downloadPopup');"); } public void initGuestbookMultipleResponse(String selectedFileIds){ @@ -3885,9 +3885,9 @@ public void initGuestbookResponse(FileMetadata fileMetadata, String downloadForm public void compareVersionDifferences() { - RequestContext requestContext = RequestContext.getCurrentInstance(); + //RequestContext requestContext = RequestContext.getCurrentInstance(); if (this.selectedVersions.size() != 2) { - requestContext.execute("openCompareTwo();"); + PrimeFaces.current().executeScript("openCompareTwo();"); } else { //order depends on order of selection - needs to be chronological order if (this.selectedVersions.get(0).getId().intValue() > this.selectedVersions.get(1).getId().intValue()) { @@ -4716,8 +4716,8 @@ public boolean isRequestAccessPopupRequired() { public String requestAccessMultipleFiles() { if (selectedFiles.isEmpty()) { - RequestContext requestContext = RequestContext.getCurrentInstance(); - requestContext.execute("PF('selectFilesForRequestAccess').show()"); + //RequestContext requestContext = RequestContext.getCurrentInstance(); + PrimeFaces.current().executeScript("PF('selectFilesForRequestAccess').show()"); return ""; } else { fileDownloadHelper.clearRequestAccessFiles(); @@ -4725,8 +4725,8 @@ public String requestAccessMultipleFiles() { fileDownloadHelper.addMultipleFilesForRequestAccess(fmd.getDataFile()); } if (isRequestAccessPopupRequired()) { - RequestContext requestContext = RequestContext.getCurrentInstance(); - requestContext.execute("PF('requestAccessPopup').show()"); + //RequestContext requestContext = RequestContext.getCurrentInstance(); + PrimeFaces.current().executeScript("PF('requestAccessPopup').show()"); return ""; } else { //No popup required diff --git a/src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java b/src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java index 1b728fc9d12..8a104d1ddd0 100644 --- a/src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java @@ -84,7 +84,8 @@ import javax.validation.Validator; import javax.validation.ValidatorFactory; import org.apache.commons.lang.StringUtils; -import org.primefaces.context.RequestContext; +import org.primefaces.PrimeFaces; +//import org.primefaces.context.RequestContext; /** * @@ -1755,9 +1756,11 @@ public void uploadFinished() { } if(isFileReplaceOperation() && fileReplacePageHelper.hasContentTypeWarning()){ - RequestContext context = RequestContext.getCurrentInstance(); - RequestContext.getCurrentInstance().update("datasetForm:fileTypeDifferentPopup"); - context.execute("PF('fileTypeDifferentPopup').show();"); + //RequestContext context = RequestContext.getCurrentInstance(); + //RequestContext.getCurrentInstance().update("datasetForm:fileTypeDifferentPopup"); + PrimeFaces.current().ajax().update("datasetForm:fileTypeDifferentPopup"); + //context.execute("PF('fileTypeDifferentPopup').show();"); + PrimeFaces.current().executeScript("PF('fileTypeDifferentPopup').show();"); } // We clear the following duplicate warning labels, because we want to @@ -1892,9 +1895,11 @@ public void handleFileUpload(FileUploadEvent event) throws IOException { event, null); if(fileReplacePageHelper.hasContentTypeWarning()){ - RequestContext context = RequestContext.getCurrentInstance(); - RequestContext.getCurrentInstance().update("datasetForm:fileTypeDifferentPopup"); - context.execute("PF('fileTypeDifferentPopup').show();"); + //RequestContext context = RequestContext.getCurrentInstance(); + //RequestContext.getCurrentInstance().update("datasetForm:fileTypeDifferentPopup"); + //context.execute("PF('fileTypeDifferentPopup').show();"); + PrimeFaces.current().ajax().update("datasetForm:fileTypeDifferentPopup"); + PrimeFaces.current().executeScript("PF('fileTypeDifferentPopup').show();"); } return; diff --git a/src/main/java/edu/harvard/iq/dataverse/FileDownloadHelper.java b/src/main/java/edu/harvard/iq/dataverse/FileDownloadHelper.java index 8bd93c1e504..70a47449e11 100644 --- a/src/main/java/edu/harvard/iq/dataverse/FileDownloadHelper.java +++ b/src/main/java/edu/harvard/iq/dataverse/FileDownloadHelper.java @@ -24,7 +24,8 @@ import javax.faces.view.ViewScoped; import javax.inject.Inject; import javax.inject.Named; -import org.primefaces.context.RequestContext; +import org.primefaces.PrimeFaces; +//import org.primefaces.context.RequestContext; /** * @@ -224,13 +225,14 @@ private boolean validateGuestbookResponse(GuestbookResponse guestbookResponse){ // file downloads and multiple (batch) downloads - sice both use the same // terms/etc. popup. public void writeGuestbookAndStartDownload(GuestbookResponse guestbookResponse) { - RequestContext requestContext = RequestContext.getCurrentInstance(); + //RequestContext requestContext = RequestContext.getCurrentInstance(); boolean valid = validateGuestbookResponse(guestbookResponse); if (!valid) { JH.addMessage(FacesMessage.SEVERITY_ERROR, BundleUtil.getStringFromBundle("dataset.message.validationError")); } else { - requestContext.execute("PF('downloadPopup').hide()"); + //requestContext.execute("PF('downloadPopup').hide()"); + PrimeFaces.current().executeScript("PF('downloadPopup').hide()"); guestbookResponse.setDownloadtype("Download"); // Note that this method is only ever called from the file-download-popup - @@ -252,14 +254,16 @@ public void writeGuestbookAndStartDownload(GuestbookResponse guestbookResponse) } public void writeGuestbookAndOpenSubset(GuestbookResponse guestbookResponse) { - RequestContext requestContext = RequestContext.getCurrentInstance(); + //RequestContext requestContext = RequestContext.getCurrentInstance(); boolean valid = validateGuestbookResponse(guestbookResponse); if (!valid) { } else { - requestContext.execute("PF('downloadPopup').hide()"); - requestContext.execute("PF('downloadDataSubsetPopup').show()"); + //requestContext.execute("PF('downloadPopup').hide()"); + PrimeFaces.current().executeScript("PF('downloadPopup').hide()"); + //requestContext.execute("PF('downloadDataSubsetPopup').show()"); + PrimeFaces.current().executeScript("PF('downloadDataSubsetPopup').show()"); guestbookResponse.setDownloadtype("Subset"); fileDownloadService.writeGuestbookResponseRecord(guestbookResponse); } @@ -298,26 +302,30 @@ public void writeGuestbookAndLaunchExploreTool(GuestbookResponse guestbookRespon } } - RequestContext requestContext = RequestContext.getCurrentInstance(); + //RequestContext requestContext = RequestContext.getCurrentInstance(); boolean valid = validateGuestbookResponse(guestbookResponse); if (!valid) { return; } fileDownloadService.explore(guestbookResponse, fmd, externalTool); - requestContext.execute("PF('downloadPopup').hide()"); + //requestContext.execute("PF('downloadPopup').hide()"); + PrimeFaces.current().executeScript("PF('downloadPopup').hide()"); } public void writeGuestbookAndLaunchPackagePopup(GuestbookResponse guestbookResponse) { - RequestContext requestContext = RequestContext.getCurrentInstance(); + //RequestContext requestContext = RequestContext.getCurrentInstance(); boolean valid = validateGuestbookResponse(guestbookResponse); if (!valid) { JH.addMessage(FacesMessage.SEVERITY_ERROR, BundleUtil.getStringFromBundle("dataset.message.validationError")); } else { - requestContext.execute("PF('downloadPopup').hide()"); - requestContext.execute("PF('downloadPackagePopup').show()"); - requestContext.execute("handleResizeDialog('downloadPackagePopup')"); + //requestContext.execute("PF('downloadPopup').hide()"); + PrimeFaces.current().executeScript("PF('downloadPopup').hide()"); + //requestContext.execute("PF('downloadPackagePopup').show()"); + PrimeFaces.current().executeScript("PF('downloadPackagePopup').show()"); + //requestContext.execute("handleResizeDialog('downloadPackagePopup')"); + PrimeFaces.current().executeScript("handleResizeDialog('downloadPackagePopup')"); fileDownloadService.writeGuestbookResponseRecord(guestbookResponse); } @@ -325,7 +333,7 @@ public void writeGuestbookAndLaunchPackagePopup(GuestbookResponse guestbookRespo public String startWorldMapDownloadLink(GuestbookResponse guestbookResponse, FileMetadata fmd){ - RequestContext requestContext = RequestContext.getCurrentInstance(); + //RequestContext requestContext = RequestContext.getCurrentInstance(); boolean valid = validateGuestbookResponse(guestbookResponse); if (!valid) { @@ -333,7 +341,8 @@ public String startWorldMapDownloadLink(GuestbookResponse guestbookResponse, Fil } guestbookResponse.setDownloadtype("WorldMap"); String retVal = fileDownloadService.startWorldMapDownloadLink(guestbookResponse, fmd); - requestContext.execute("PF('downloadPopup').hide()"); + //requestContext.execute("PF('downloadPopup').hide()"); + PrimeFaces.current().executeScript("PF('downloadPopup').hide()"); return retVal; } diff --git a/src/main/java/edu/harvard/iq/dataverse/FileDownloadServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/FileDownloadServiceBean.java index 8050ee6d85b..98ca982a775 100644 --- a/src/main/java/edu/harvard/iq/dataverse/FileDownloadServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/FileDownloadServiceBean.java @@ -32,7 +32,7 @@ import javax.servlet.http.HttpServletResponse; import org.primefaces.PrimeFaces; -import org.primefaces.context.RequestContext; +//import org.primefaces.context.RequestContext; /** * diff --git a/src/main/java/edu/harvard/iq/dataverse/IngestUpdatePushResource.java b/src/main/java/edu/harvard/iq/dataverse/IngestUpdatePushResource.java deleted file mode 100644 index 518fbe89932..00000000000 --- a/src/main/java/edu/harvard/iq/dataverse/IngestUpdatePushResource.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package edu.harvard.iq.dataverse; - -import javax.faces.application.FacesMessage; - -import org.primefaces.push.EventBus; -import org.primefaces.push.RemoteEndpoint; -import org.primefaces.push.annotation.OnClose; -import org.primefaces.push.annotation.OnMessage; -import org.primefaces.push.annotation.OnOpen; -import org.primefaces.push.annotation.PathParam; -import org.primefaces.push.annotation.PushEndpoint; -import org.primefaces.push.annotation.Singleton; -import org.primefaces.push.impl.JSONEncoder; -import java.util.logging.Logger; - - - -/** - * - * @author Leonid Andreev - */ -@PushEndpoint("/ingest/dataset/{datasetId}") -@Singleton -public class IngestUpdatePushResource { - private final Logger logger = Logger.getLogger(IngestUpdatePushResource.class.getCanonicalName()); - - @PathParam("datasetId") - private String datasetId; - /* - @OnOpen - public void onOpen(RemoteEndpoint r, EventBus eventBus) { - logger.info("OnOpen {"+datasetId+"} "+r.toString()); - } - - @OnClose - public void onClose(RemoteEndpoint r, EventBus eventBus) { - logger.info("OnClose {"+datasetId+"} "+r.toString()); - } - */ - - - @OnMessage(encoders = {JSONEncoder.class}) - public FacesMessage onMessage(FacesMessage message) { - logger.fine("OnMessage {"+datasetId+"}: "+message.getDetail()); - return message; - } - -} diff --git a/src/main/java/edu/harvard/iq/dataverse/ThemeWidgetFragment.java b/src/main/java/edu/harvard/iq/dataverse/ThemeWidgetFragment.java index ad04848ef66..88084919acf 100644 --- a/src/main/java/edu/harvard/iq/dataverse/ThemeWidgetFragment.java +++ b/src/main/java/edu/harvard/iq/dataverse/ThemeWidgetFragment.java @@ -33,7 +33,8 @@ import javax.inject.Named; import org.apache.commons.lang.StringUtils; -import org.primefaces.context.RequestContext; +import org.primefaces.PrimeFaces; +//import org.primefaces.context.RequestContext; import org.primefaces.event.FileUploadEvent; import org.primefaces.model.UploadedFile; @@ -298,8 +299,9 @@ public void setInheritCustomization(boolean inherit) { } } public void resetForm() { - RequestContext context = RequestContext.getCurrentInstance(); - context.reset(":dataverseForm:themeWidgetsTabView"); + //RequestContext context = RequestContext.getCurrentInstance(); + //context.reset(":dataverseForm:themeWidgetsTabView"); + PrimeFaces.current().resetInputs(":dataverseForm:themeWidgetsTabView"); } public String cancel() { diff --git a/src/main/java/edu/harvard/iq/dataverse/authorization/providers/builtin/PasswordEncryption.java b/src/main/java/edu/harvard/iq/dataverse/authorization/providers/builtin/PasswordEncryption.java index 4e268e7e225..38cabb6ef25 100644 --- a/src/main/java/edu/harvard/iq/dataverse/authorization/providers/builtin/PasswordEncryption.java +++ b/src/main/java/edu/harvard/iq/dataverse/authorization/providers/builtin/PasswordEncryption.java @@ -5,7 +5,8 @@ import java.security.NoSuchAlgorithmException; import org.apache.commons.lang.RandomStringUtils; import org.mindrot.jbcrypt.BCrypt; -import org.primefaces.util.Base64; +//import org.primefaces.util.Base64; +import java.util.Base64; /** * Password encryption, supporting multiple encryption algorithms to @@ -37,7 +38,8 @@ public String encrypt(String plainText) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(plainText.getBytes("UTF-8")); byte[] raw = md.digest(); - String hash = Base64.encodeToString(raw, true); + //String hash = Base64.encodeToString(raw, true); + String hash = Base64.getEncoder().encodeToString(raw); return hash; } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { diff --git a/src/main/java/edu/harvard/iq/dataverse/dataaccess/ImageThumbConverter.java b/src/main/java/edu/harvard/iq/dataverse/dataaccess/ImageThumbConverter.java index f273d215a3e..81b10567a78 100644 --- a/src/main/java/edu/harvard/iq/dataverse/dataaccess/ImageThumbConverter.java +++ b/src/main/java/edu/harvard/iq/dataverse/dataaccess/ImageThumbConverter.java @@ -49,7 +49,8 @@ import java.nio.file.Paths; import java.util.logging.Logger; import org.apache.commons.io.IOUtils; -import org.primefaces.util.Base64; +//import org.primefaces.util.Base64; +import java.util.Base64; /** * @@ -528,7 +529,15 @@ private static String getImageAsBase64FromInputStream(InputStream inputStream) { logger.fine("inside getImageThumbnailAsBase64FromInputStream; read " + total + " bytes of raw thumbnail image."); if (buffer != null) { - String imageDataBase64 = Base64.encodeToString(cachingByteStream.toByteArray(), false); + //String imageDataBase64 = Base64.encodeToString(cachingByteStream.toByteArray(), false); + String imageDataBase64 = Base64.getEncoder().encodeToString(cachingByteStream.toByteArray()); + // TODO: + // verify that the base64-encoded thumbnails on the dataset and dataverse pages are + // still working; PrimeFace's Base64 implementation was discontinued in 7.0, + // in favor of java.util.Base64 available in Java 1.8. However, the former does not seem to + // offer a way to generate a base64 string without line breaks - and that's how we used to generate these + // thumbnail strings (the "false" argument in the commented-out line above). + // Need to verify that new lines in these strings don't break the pages. return FileUtil.DATA_URI_SCHEME + imageDataBase64; } }