diff --git a/modules/dataverse-parent/pom.xml b/modules/dataverse-parent/pom.xml
index 3911e9d5bbb..490341d2b6e 100644
--- a/modules/dataverse-parent/pom.xml
+++ b/modules/dataverse-parent/pom.xml
@@ -14,6 +14,7 @@
../../pom.xml
../../scripts/zipdownload
../container-base
+ ../extension-api
+ 1.0.0-SNAPSHOT
+ jar
+ Extension API
+
+ This package provides interfaces, data transfer objects, utilities and so on to create Dataverse extensions.
+ For more information on how to use, please read the developer guide of Dataverse at https://guides.dataverse.org.
+
+
+
+
+ poikilotherm
+ Oliver Bertuch
+ github@bertuch.eu
+ Europe/Berlin
+
+ maintainer
+
+
+
+
+
+
+
+
+
+ jakarta.platform
+ jakarta.jakartaee-api
+ ${jakartaee-api.version}
+ provided
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ ${target.java.version}
+
+ ${compilerArgument}
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ true
+ true
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/ExportException.java b/modules/extension-api/src/main/java/io/gdcc/dataverse/extension/exceptions/ExportException.java
similarity index 90%
rename from src/main/java/edu/harvard/iq/dataverse/export/ExportException.java
rename to modules/extension-api/src/main/java/io/gdcc/dataverse/extension/exceptions/ExportException.java
index 0909bf06ca4..a9b5426c1d9 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/ExportException.java
+++ b/modules/extension-api/src/main/java/io/gdcc/dataverse/extension/exceptions/ExportException.java
@@ -3,7 +3,7 @@
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
-package edu.harvard.iq.dataverse.export;
+package io.gdcc.dataverse.extension.exceptions;
/**
*
diff --git a/modules/extension-api/src/main/java/io/gdcc/dataverse/extension/spi/Exporter.java b/modules/extension-api/src/main/java/io/gdcc/dataverse/extension/spi/Exporter.java
new file mode 100644
index 00000000000..9753eb47373
--- /dev/null
+++ b/modules/extension-api/src/main/java/io/gdcc/dataverse/extension/spi/Exporter.java
@@ -0,0 +1,41 @@
+/*
+ * 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 io.gdcc.dataverse.extension.spi;
+
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+
+import javax.json.JsonObject;
+import javax.ws.rs.core.MediaType;
+import java.io.OutputStream;
+
+public interface Exporter {
+
+ void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException;
+
+ String getProviderName();
+
+ String getDisplayName();
+
+ Boolean isXMLFormat();
+
+ Boolean isHarvestable();
+
+ Boolean isAvailableToUsers();
+
+ /* These should throw an ExportException if called on an Exporter that is not isXMLFormat(): */
+ String getXMLNameSpace() throws ExportException;
+
+ String getXMLSchemaLocation() throws ExportException;
+
+ String getXMLSchemaVersion() throws ExportException;
+
+ void setParam(String name, Object value);
+
+ default String getMediaType() {
+ return MediaType.APPLICATION_XML;
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index 8b6f98c5896..8b15654b16f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,6 +53,12 @@
-->
+
+
+ io.gdcc
+ extension-api
+ 1.0.0-SNAPSHOT
+
diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
index 6e71f6c5042..f7285d7786b 100644
--- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
+++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
@@ -1,5 +1,6 @@
package edu.harvard.iq.dataverse;
+import edu.harvard.iq.dataverse.export.ExportService;
import edu.harvard.iq.dataverse.provenance.ProvPopupFragmentBean;
import edu.harvard.iq.dataverse.api.AbstractApiBean;
import edu.harvard.iq.dataverse.authorization.AuthenticationServiceBean;
@@ -33,9 +34,6 @@
import edu.harvard.iq.dataverse.engine.command.impl.PublishDatasetCommand;
import edu.harvard.iq.dataverse.engine.command.impl.PublishDataverseCommand;
import edu.harvard.iq.dataverse.engine.command.impl.UpdateDatasetVersionCommand;
-import edu.harvard.iq.dataverse.export.ExportException;
-import edu.harvard.iq.dataverse.export.ExportService;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.ingest.IngestRequest;
import edu.harvard.iq.dataverse.ingest.IngestServiceBean;
import edu.harvard.iq.dataverse.license.LicenseServiceBean;
@@ -88,6 +86,8 @@
import javax.inject.Inject;
import javax.inject.Named;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
import org.apache.commons.lang3.StringUtils;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.file.UploadedFile;
diff --git a/src/main/java/edu/harvard/iq/dataverse/FilePage.java b/src/main/java/edu/harvard/iq/dataverse/FilePage.java
index 85eb79d2ddc..c0f57a4d471 100644
--- a/src/main/java/edu/harvard/iq/dataverse/FilePage.java
+++ b/src/main/java/edu/harvard/iq/dataverse/FilePage.java
@@ -22,9 +22,7 @@
import edu.harvard.iq.dataverse.engine.command.impl.PersistProvFreeFormCommand;
import edu.harvard.iq.dataverse.engine.command.impl.RestrictFileCommand;
import edu.harvard.iq.dataverse.engine.command.impl.UpdateDatasetVersionCommand;
-import edu.harvard.iq.dataverse.export.ExportException;
import edu.harvard.iq.dataverse.export.ExportService;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.externaltools.ExternalTool;
import edu.harvard.iq.dataverse.externaltools.ExternalToolHandler;
import edu.harvard.iq.dataverse.externaltools.ExternalToolServiceBean;
@@ -59,6 +57,8 @@
import javax.inject.Named;
import javax.validation.ConstraintViolation;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
import org.primefaces.PrimeFaces;
import org.primefaces.component.tabview.TabView;
import org.primefaces.event.TabChangeEvent;
@@ -341,7 +341,7 @@ public List< String[]> getExporters(){
String formatName = provider[1];
String formatDisplayName = provider[0];
- Exporter exporter = null;
+ Exporter exporter = null;
try {
exporter = ExportService.getInstance().getExporter(formatName);
} catch (ExportException ex) {
diff --git a/src/main/java/edu/harvard/iq/dataverse/api/Files.java b/src/main/java/edu/harvard/iq/dataverse/api/Files.java
index af0f6be6d32..6778821a02c 100644
--- a/src/main/java/edu/harvard/iq/dataverse/api/Files.java
+++ b/src/main/java/edu/harvard/iq/dataverse/api/Files.java
@@ -30,7 +30,6 @@
import edu.harvard.iq.dataverse.engine.command.impl.RestrictFileCommand;
import edu.harvard.iq.dataverse.engine.command.impl.UningestFileCommand;
import edu.harvard.iq.dataverse.engine.command.impl.UpdateDatasetVersionCommand;
-import edu.harvard.iq.dataverse.export.ExportException;
import edu.harvard.iq.dataverse.export.ExportService;
import edu.harvard.iq.dataverse.externaltools.ExternalTool;
import edu.harvard.iq.dataverse.externaltools.ExternalToolHandler;
@@ -71,6 +70,8 @@
import javax.ws.rs.core.Response;
import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
import javax.ws.rs.core.UriInfo;
+
+import io.gdcc.dataverse.extension.exceptions.ExportException;
import org.glassfish.jersey.media.multipart.FormDataBodyPart;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;
diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java
index 66ba00bcf55..13ed3462901 100644
--- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java
+++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java
@@ -1,13 +1,11 @@
package edu.harvard.iq.dataverse.engine.command.impl;
import edu.harvard.iq.dataverse.authorization.Permission;
-import edu.harvard.iq.dataverse.datavariable.VarGroup;
import edu.harvard.iq.dataverse.engine.command.CommandContext;
import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
import edu.harvard.iq.dataverse.engine.command.RequiredPermissions;
import edu.harvard.iq.dataverse.engine.command.exception.CommandException;
import edu.harvard.iq.dataverse.engine.command.exception.IllegalCommandException;
-import edu.harvard.iq.dataverse.export.ExportException;
import edu.harvard.iq.dataverse.export.ExportService;
import edu.harvard.iq.dataverse.util.BundleUtil;
import edu.harvard.iq.dataverse.util.DatasetFieldUtil;
@@ -19,8 +17,8 @@
import edu.harvard.iq.dataverse.FileMetadata;
import edu.harvard.iq.dataverse.DataFileCategory;
import edu.harvard.iq.dataverse.DatasetVersionDifference;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
-import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/DeaccessionDatasetVersionCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/DeaccessionDatasetVersionCommand.java
index 391e798e285..69ee5434f4b 100644
--- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/DeaccessionDatasetVersionCommand.java
+++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/DeaccessionDatasetVersionCommand.java
@@ -15,15 +15,14 @@
import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
import edu.harvard.iq.dataverse.engine.command.RequiredPermissions;
import edu.harvard.iq.dataverse.engine.command.exception.CommandException;
-import edu.harvard.iq.dataverse.engine.command.exception.IllegalCommandException;
-import edu.harvard.iq.dataverse.export.ExportException;
import edu.harvard.iq.dataverse.export.ExportService;
-import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
-import edu.harvard.iq.dataverse.util.BundleUtil;
+
import java.io.IOException;
import java.util.logging.Logger;
import edu.harvard.iq.dataverse.batch.util.LoggingUtil;
import java.util.concurrent.Future;
+
+import io.gdcc.dataverse.extension.exceptions.ExportException;
import org.apache.solr.client.solrj.SolrServerException;
/**
diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/RedetectFileTypeCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/RedetectFileTypeCommand.java
index 286b107a5fd..11128e19641 100644
--- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/RedetectFileTypeCommand.java
+++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/RedetectFileTypeCommand.java
@@ -9,10 +9,10 @@
import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
import edu.harvard.iq.dataverse.engine.command.RequiredPermissions;
import edu.harvard.iq.dataverse.engine.command.exception.CommandException;
-import edu.harvard.iq.dataverse.export.ExportException;
import edu.harvard.iq.dataverse.export.ExportService;
import edu.harvard.iq.dataverse.util.EjbUtil;
import edu.harvard.iq.dataverse.util.FileUtil;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
import java.io.File;
import java.io.FileOutputStream;
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/DCTermsExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/DCTermsExporter.java
index 7c5fea0f1ec..410ba863e24 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/DCTermsExporter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/DCTermsExporter.java
@@ -2,13 +2,14 @@
package edu.harvard.iq.dataverse.export;
import com.google.auto.service.AutoService;
-import edu.harvard.iq.dataverse.DatasetVersion;
import edu.harvard.iq.dataverse.export.dublincore.DublinCoreExportUtil;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.util.BundleUtil;
-import java.io.OutputStream;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
+
import javax.json.JsonObject;
import javax.xml.stream.XMLStreamException;
+import java.io.OutputStream;
/**
*
@@ -30,7 +31,7 @@ public String getDisplayName() {
}
@Override
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException {
+ public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException {
try {
DublinCoreExportUtil.datasetJson2dublincore(json, outputStream, DublinCoreExportUtil.DC_FLAVOR_DCTERMS);
} catch (XMLStreamException xse) {
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/DDIExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/DDIExporter.java
index bb325226fad..910222a4a6c 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/DDIExporter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/DDIExporter.java
@@ -2,15 +2,16 @@
package edu.harvard.iq.dataverse.export;
import com.google.auto.service.AutoService;
-import edu.harvard.iq.dataverse.DatasetVersion;
import edu.harvard.iq.dataverse.export.ddi.DdiExportUtil;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.util.BundleUtil;
-import java.io.OutputStream;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
+
import javax.json.JsonObject;
+import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
-import javax.xml.stream.XMLOutputFactory;
+import java.io.OutputStream;
/**
* This exporter is for the "full" DDI, that includes the file-level,
@@ -39,7 +40,7 @@ public String getDisplayName() {
}
@Override
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException {
+ public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException {
try {
XMLStreamWriter xmlw = XMLOutputFactory.newInstance().createXMLStreamWriter(outputStream);
xmlw.writeStartDocument();
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/DataCiteExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/DataCiteExporter.java
index 7110067296d..515f793f9e2 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/DataCiteExporter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/DataCiteExporter.java
@@ -2,17 +2,17 @@
package edu.harvard.iq.dataverse.export;
import com.google.auto.service.AutoService;
-
import edu.harvard.iq.dataverse.DOIDataCiteRegisterService;
import edu.harvard.iq.dataverse.DataCitation;
-import edu.harvard.iq.dataverse.DatasetVersion;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.util.BundleUtil;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
+
+import javax.json.JsonObject;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.util.Map;
-import javax.json.JsonObject;
/**
*
@@ -39,7 +39,7 @@ public String getDisplayName() {
}
@Override
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream)
+ public void exportDataset(JsonObject json, OutputStream outputStream)
throws ExportException {
try {
DataCitation dc = new DataCitation(version);
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/DublinCoreExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/DublinCoreExporter.java
index 113e669f511..e1709559a55 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/DublinCoreExporter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/DublinCoreExporter.java
@@ -2,13 +2,14 @@
package edu.harvard.iq.dataverse.export;
import com.google.auto.service.AutoService;
-import edu.harvard.iq.dataverse.DatasetVersion;
import edu.harvard.iq.dataverse.export.dublincore.DublinCoreExportUtil;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.util.BundleUtil;
-import java.io.OutputStream;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
+
import javax.json.JsonObject;
import javax.xml.stream.XMLStreamException;
+import java.io.OutputStream;
/**
*
@@ -30,7 +31,7 @@ public String getDisplayName() {
}
@Override
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException {
+ public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException {
try {
DublinCoreExportUtil.datasetJson2dublincore(json, outputStream, DublinCoreExportUtil.DC_FLAVOR_OAI);
} catch (XMLStreamException xse) {
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/ExportService.java b/src/main/java/edu/harvard/iq/dataverse/export/ExportService.java
index ddc6296093c..b255c2c37aa 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/ExportService.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/ExportService.java
@@ -10,8 +10,6 @@
import static edu.harvard.iq.dataverse.dataaccess.DataAccess.getStorageIO;
import edu.harvard.iq.dataverse.dataaccess.DataAccessOption;
import edu.harvard.iq.dataverse.dataaccess.StorageIO;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
-import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
import edu.harvard.iq.dataverse.util.json.JsonPrinter;
import java.io.BufferedReader;
import java.io.File;
@@ -41,6 +39,8 @@
import javax.json.JsonObjectBuilder;
import javax.ws.rs.core.MediaType;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
import org.apache.commons.io.IOUtils;
/**
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/HtmlCodeBookExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/HtmlCodeBookExporter.java
index 367ac4bbc5b..374d16f4eff 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/HtmlCodeBookExporter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/HtmlCodeBookExporter.java
@@ -1,21 +1,17 @@
package edu.harvard.iq.dataverse.export;
import com.google.auto.service.AutoService;
-import edu.harvard.iq.dataverse.Dataset;
-import edu.harvard.iq.dataverse.DatasetVersion;
import edu.harvard.iq.dataverse.export.ddi.DdiExportUtil;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.util.BundleUtil;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
import javax.json.JsonObject;
import javax.ws.rs.core.MediaType;
import javax.xml.stream.XMLStreamException;
-import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.nio.file.Path;
-import java.nio.file.Paths;
@AutoService(Exporter.class)
public class HtmlCodeBookExporter implements Exporter {
@@ -31,7 +27,7 @@ public String getDisplayName() {
}
@Override
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException {
+ public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException {
try {
InputStream ddiInputStream;
try {
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java
index 0c87e02456d..623ea29ae4a 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/JSONExporter.java
@@ -2,9 +2,10 @@
package edu.harvard.iq.dataverse.export;
import com.google.auto.service.AutoService;
-import edu.harvard.iq.dataverse.DatasetVersion;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.util.BundleUtil;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
+
import java.io.OutputStream;
import javax.json.JsonObject;
import javax.ws.rs.core.MediaType;
@@ -28,7 +29,7 @@ public String getDisplayName() {
}
@Override
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException {
+ public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException {
try{
outputStream.write(json.toString().getBytes("UTF8"));
outputStream.flush();
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/OAI_DDIExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/OAI_DDIExporter.java
index 30934cfc891..fad161aae85 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/OAI_DDIExporter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/OAI_DDIExporter.java
@@ -2,10 +2,11 @@
package edu.harvard.iq.dataverse.export;
import com.google.auto.service.AutoService;
-import edu.harvard.iq.dataverse.DatasetVersion;
import edu.harvard.iq.dataverse.export.ddi.DdiExportUtil;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.util.BundleUtil;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
+
import java.io.OutputStream;
import javax.json.JsonObject;
import javax.xml.stream.XMLStreamException;
@@ -32,7 +33,7 @@ public String getDisplayName() {
}
@Override
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException {
+ public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException {
try {
DdiExportUtil.datasetJson2ddi(json, outputStream);
} catch (XMLStreamException xse) {
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/OAI_OREExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/OAI_OREExporter.java
index 87adc1b4c5b..7841989db1e 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/OAI_OREExporter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/OAI_OREExporter.java
@@ -1,18 +1,15 @@
package edu.harvard.iq.dataverse.export;
import com.google.auto.service.AutoService;
-import edu.harvard.iq.dataverse.DatasetVersion;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
-import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
-import edu.harvard.iq.dataverse.export.ExportException;
import edu.harvard.iq.dataverse.util.BundleUtil;
import edu.harvard.iq.dataverse.util.bagit.OREMap;
-import java.io.OutputStream;
-import java.util.ResourceBundle;
-import java.util.logging.Logger;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
import javax.json.JsonObject;
import javax.ws.rs.core.MediaType;
+import java.io.OutputStream;
+import java.util.logging.Logger;
@AutoService(Exporter.class)
public class OAI_OREExporter implements Exporter {
@@ -22,7 +19,7 @@ public class OAI_OREExporter implements Exporter {
public static final String NAME = "OAI_ORE";
@Override
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream)
+ public void exportDataset(JsonObject json, OutputStream outputStream)
throws ExportException {
try {
new OREMap(version).writeOREMap(outputStream);
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/OpenAireExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/OpenAireExporter.java
index f4ce294f6e9..99d57491e9c 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/OpenAireExporter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/OpenAireExporter.java
@@ -9,8 +9,9 @@
import edu.harvard.iq.dataverse.DatasetVersion;
import edu.harvard.iq.dataverse.export.openaire.OpenAireExportUtil;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.util.BundleUtil;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
@AutoService(Exporter.class)
public class OpenAireExporter implements Exporter {
@@ -29,7 +30,7 @@ public String getDisplayName() {
}
@Override
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream)
+ public void exportDataset(JsonObject json, OutputStream outputStream)
throws ExportException {
try {
OpenAireExportUtil.datasetJson2openaire(json, outputStream);
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporter.java b/src/main/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporter.java
index 971f0e5afa5..8baa507063b 100644
--- a/src/main/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporter.java
@@ -1,17 +1,18 @@
package edu.harvard.iq.dataverse.export;
import com.google.auto.service.AutoService;
-import edu.harvard.iq.dataverse.DatasetVersion;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.util.BundleUtil;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.StringReader;
-import java.util.logging.Logger;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
+
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.ws.rs.core.MediaType;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.StringReader;
+import java.util.logging.Logger;
/**
* Schema.org JSON-LD is used by Google Dataset Search and other services to
@@ -75,7 +76,7 @@ public class SchemaDotOrgExporter implements Exporter {
public static final String NAME = "schema.org";
@Override
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException {
+ public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException {
String jsonLdAsString = version.getJsonLd();
try (JsonReader jsonReader = Json.createReader(new StringReader(jsonLdAsString));) {
JsonObject jsonLdJsonObject = jsonReader.readObject();
diff --git a/src/main/java/edu/harvard/iq/dataverse/export/spi/Exporter.java b/src/main/java/edu/harvard/iq/dataverse/export/spi/Exporter.java
deleted file mode 100644
index e44265946f6..00000000000
--- a/src/main/java/edu/harvard/iq/dataverse/export/spi/Exporter.java
+++ /dev/null
@@ -1,52 +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.export.spi;
-
-import edu.harvard.iq.dataverse.DatasetVersion;
-import edu.harvard.iq.dataverse.export.ExportException;
-import java.io.OutputStream;
-import javax.json.JsonObject;
-import javax.ws.rs.core.MediaType;
-
-/**
- *
- * @author skraffmi
- */
-public interface Exporter {
-
- /* When implementing exportDataset, when done writing content, please make sure to flush() the outputStream,
- but NOT close() it!
- This way an exporter can be used to insert the produced metadata into the
- body of an HTTP response, etc. (for example, to insert it into the body
- of an OAI response, where more XML needs to be written, for the outer
- OAI-PMH record). -- L.A. 4.5
- */
- //public void exportDataset(JsonObject json, OutputStream outputStream) throws ExportException;
-
- public void exportDataset(DatasetVersion version, JsonObject json, OutputStream outputStream) throws ExportException;
-
- public String getProviderName();
-
- public String getDisplayName();
-
- public Boolean isXMLFormat();
-
- public Boolean isHarvestable();
-
- public Boolean isAvailableToUsers();
-
- /* These should throw an ExportException if called on an Exporter that is not isXMLFormat(): */
- public String getXMLNameSpace() throws ExportException;
- public String getXMLSchemaLocation() throws ExportException;
- public String getXMLSchemaVersion() throws ExportException;
-
- public void setParam(String name, Object value);
-
- public default String getMediaType() {
- return MediaType.APPLICATION_XML;
- };
-
-}
diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java
index 6cdc4e5c277..4a3dba8f00e 100644
--- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java
+++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAIRecordServiceBean.java
@@ -8,10 +8,11 @@
import edu.harvard.iq.dataverse.Dataset;
import edu.harvard.iq.dataverse.DatasetServiceBean;
import edu.harvard.iq.dataverse.DatasetVersion;
-import edu.harvard.iq.dataverse.export.ExportException;
import edu.harvard.iq.dataverse.export.ExportService;
import edu.harvard.iq.dataverse.search.IndexServiceBean;
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+
import java.time.Instant;
import java.io.File;
import java.io.IOException;
diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java
index f778fd56644..d4ee7555b55 100644
--- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java
+++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java
@@ -5,6 +5,8 @@
*/
package edu.harvard.iq.dataverse.harvest.server.web.servlet;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
+import io.gdcc.dataverse.extension.spi.Exporter;
import io.gdcc.xoai.dataprovider.DataProvider;
import io.gdcc.xoai.dataprovider.repository.Repository;
import io.gdcc.xoai.dataprovider.repository.RepositoryConfiguration;
@@ -20,9 +22,7 @@
import io.gdcc.xoai.xml.XmlWriter;
import edu.harvard.iq.dataverse.DatasetServiceBean;
import edu.harvard.iq.dataverse.DataverseServiceBean;
-import edu.harvard.iq.dataverse.export.ExportException;
import edu.harvard.iq.dataverse.export.ExportService;
-import edu.harvard.iq.dataverse.export.spi.Exporter;
import edu.harvard.iq.dataverse.harvest.server.OAIRecordServiceBean;
import edu.harvard.iq.dataverse.harvest.server.OAISetServiceBean;
import edu.harvard.iq.dataverse.harvest.server.xoai.DataverseXoaiItemRepository;
diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java
index 147d42648fa..75ea681fa00 100644
--- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java
+++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/xoai/DataverseXoaiItemRepository.java
@@ -1,5 +1,6 @@
package edu.harvard.iq.dataverse.harvest.server.xoai;
+import io.gdcc.dataverse.extension.exceptions.ExportException;
import io.gdcc.xoai.dataprovider.exceptions.handler.IdDoesNotExistException;
import io.gdcc.xoai.dataprovider.filter.ScopedFilter;
import io.gdcc.xoai.dataprovider.model.Item;
@@ -9,7 +10,6 @@
import io.gdcc.xoai.dataprovider.repository.ItemRepository;
import edu.harvard.iq.dataverse.Dataset;
import edu.harvard.iq.dataverse.DatasetServiceBean;
-import edu.harvard.iq.dataverse.export.ExportException;
import edu.harvard.iq.dataverse.export.ExportService;
import edu.harvard.iq.dataverse.harvest.server.OAIRecord;
import edu.harvard.iq.dataverse.harvest.server.OAIRecordServiceBean;