mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-18 07:23:08 +00:00
Moved iiif to separate module.
This commit is contained in:
121
dspace-iiif/pom.xml
Normal file
121
dspace-iiif/pom.xml
Normal file
@@ -0,0 +1,121 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.dspace</groupId>
|
||||
<artifactId>dspace-iiif</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>DSpace IIIF</name>
|
||||
<description>
|
||||
DSpace IIIF Extension
|
||||
</description>
|
||||
|
||||
<!--
|
||||
A Parent POM that Maven inherits DSpace Default
|
||||
POM attributes from.
|
||||
-->
|
||||
<parent>
|
||||
<groupId>org.dspace</groupId>
|
||||
<artifactId>dspace-parent</artifactId>
|
||||
<version>7.1-SNAPSHOT</version>
|
||||
<relativePath>..</relativePath>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<!-- This is the path to the root [dspace-src] directory. -->
|
||||
<root.basedir>${basedir}/..</root.basedir>
|
||||
<!-- Default resource delimiter for Spring Boot, so it doesn't clash with Spring ${} placeholders-->
|
||||
<resource.delimiter>@</resource.delimiter>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- Needed to support Spring @Configuration classes (to register servlets/beans with Spring Boot webapp) -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
<version>${spring-boot.version}</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-logging</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<version>${spring-boot.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-rest</artifactId>
|
||||
<version>${spring-boot.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-security</artifactId>
|
||||
<version>${spring-boot.version}</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-cache
|
||||
Caching dependencies for iiif endpoint. -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-cache</artifactId>
|
||||
<version>${spring-boot.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.cache</groupId>
|
||||
<artifactId>cache-api</artifactId>
|
||||
<version>1.1.0</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.ehcache/ehcache -->
|
||||
<dependency>
|
||||
<groupId>org.ehcache</groupId>
|
||||
<artifactId>ehcache</artifactId>
|
||||
<version>3.4.0</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- iiif models. -->
|
||||
<dependency>
|
||||
<groupId>de.digitalcollections.iiif</groupId>
|
||||
<artifactId>iiif-apis</artifactId>
|
||||
<version>0.3.9</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.javassist</groupId>
|
||||
<artifactId>javassist</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-core</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.dmfs</groupId>
|
||||
<artifactId>iterators</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.fasterxml.jackson.module</groupId>
|
||||
<artifactId>jackson-module-parameter-names</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<!-- Internal -->
|
||||
<dependency>
|
||||
<groupId>org.dspace</groupId>
|
||||
<artifactId>dspace-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@@ -5,12 +5,11 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest;
|
||||
package org.dspace.app.iiif;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.dspace.app.rest.iiif.IIIFServiceFacade;
|
||||
import org.dspace.app.rest.utils.ContextUtil;
|
||||
import org.dspace.app.iiif.dspace.ContextUtil;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.services.RequestService;
|
||||
import org.dspace.utils.DSpace;
|
@@ -5,16 +5,16 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif;
|
||||
package org.dspace.app.iiif;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.dspace.app.rest.iiif.service.AnnotationListService;
|
||||
import org.dspace.app.rest.iiif.service.CanvasLookupService;
|
||||
import org.dspace.app.rest.iiif.service.ManifestService;
|
||||
import org.dspace.app.rest.iiif.service.SearchService;
|
||||
import org.dspace.app.rest.iiif.service.util.IIIFUtils;
|
||||
import org.dspace.app.iiif.service.AnnotationListService;
|
||||
import org.dspace.app.iiif.service.CanvasLookupService;
|
||||
import org.dspace.app.iiif.service.ManifestService;
|
||||
import org.dspace.app.iiif.service.SearchService;
|
||||
import org.dspace.app.iiif.service.utils.IIIFUtils;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.content.service.BitstreamService;
|
||||
import org.dspace.content.service.ItemService;
|
@@ -0,0 +1,158 @@
|
||||
/**
|
||||
* The contents of this file are subject to the license and copyright
|
||||
* detailed in the LICENSE and NOTICE files at the root of the source
|
||||
* tree and available online at
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.iiif.dspace;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Enumeration;
|
||||
import java.util.Locale;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.core.I18nUtil;
|
||||
import org.dspace.services.RequestService;
|
||||
import org.dspace.services.model.Request;
|
||||
import org.dspace.utils.DSpace;
|
||||
|
||||
public class ContextUtil {
|
||||
/**
|
||||
* Where the context is stored on an HTTP Request object
|
||||
*/
|
||||
public static final String DSPACE_CONTEXT = "dspace.context";
|
||||
|
||||
/**
|
||||
* Default constructor
|
||||
*/
|
||||
private ContextUtil() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Shortcut for {@link #obtainContext(Request)} using the {@link RequestService}
|
||||
* to retrieve the current thread request
|
||||
*
|
||||
* @return the DSpace Context associated with the current thread-bound request
|
||||
*/
|
||||
public static Context obtainCurrentRequestContext() {
|
||||
Context context = null;
|
||||
RequestService requestService = new DSpace().getRequestService();
|
||||
Request currentRequest = requestService.getCurrentRequest();
|
||||
if (currentRequest != null) {
|
||||
context = ContextUtil.obtainContext(currentRequest.getHttpServletRequest());
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain a new context object. If a context object has already been created
|
||||
* for this HTTP request, it is re-used, otherwise it is created.
|
||||
*
|
||||
* @param request the servlet request object
|
||||
* @return a context object
|
||||
*/
|
||||
public static Context obtainContext(HttpServletRequest request) {
|
||||
Context context = (Context) request.getAttribute(DSPACE_CONTEXT);
|
||||
|
||||
if (context == null) {
|
||||
try {
|
||||
context = ContextUtil.initializeContext();
|
||||
} catch (SQLException e) {
|
||||
//log.error("Unable to initialize context", e);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Store the context in the request
|
||||
request.setAttribute(DSPACE_CONTEXT, context);
|
||||
}
|
||||
// this need to be verified each time that the context is extracted from the request
|
||||
// as some call happen before that the login process is completed and user settings can
|
||||
// change the locale
|
||||
Locale currentLocale = getLocale(context, request);
|
||||
context.setCurrentLocale(currentLocale);
|
||||
return context;
|
||||
}
|
||||
|
||||
private static Locale getLocale(Context context, HttpServletRequest request) {
|
||||
Locale userLocale = null;
|
||||
Locale supportedLocale = null;
|
||||
|
||||
// Locales requested from client
|
||||
String locale = request.getHeader("Accept-Language");
|
||||
if (StringUtils.isNotBlank(locale)) {
|
||||
Enumeration<Locale> locales = request.getLocales();
|
||||
if (locales != null) {
|
||||
while (locales.hasMoreElements()) {
|
||||
Locale current = locales.nextElement();
|
||||
if (I18nUtil.isSupportedLocale(current)) {
|
||||
userLocale = current;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (userLocale == null && context.getCurrentUser() != null) {
|
||||
String userLanguage = context.getCurrentUser().getLanguage();
|
||||
if (userLanguage != null) {
|
||||
userLocale = new Locale(userLanguage);
|
||||
}
|
||||
}
|
||||
if (userLocale == null) {
|
||||
return I18nUtil.getDefaultLocale();
|
||||
}
|
||||
supportedLocale = I18nUtil.getSupportedLocale(userLocale);
|
||||
return supportedLocale;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initialize a new Context object
|
||||
*
|
||||
* @return a DSpace Context Object
|
||||
* @throws SQLException
|
||||
*/
|
||||
private static Context initializeContext() throws SQLException {
|
||||
// Create a new Context
|
||||
Context context = new Context();
|
||||
|
||||
// Set the session ID
|
||||
/**context.setExtraLogInfo("session_id="
|
||||
+ request.getSession().getId());
|
||||
|
||||
AuthenticationUtil.resumeLogin(context, request);
|
||||
|
||||
// Set any special groups - invoke the authentication mgr.
|
||||
int[] groupIDs = AuthenticationManager.getSpecialGroups(context, request);
|
||||
|
||||
for (int i = 0; i < groupIDs.length; i++)
|
||||
{
|
||||
context.setSpecialGroup(groupIDs[i]);
|
||||
log.debug("Adding Special Group id="+String.valueOf(groupIDs[i]));
|
||||
}
|
||||
|
||||
// Set the session ID and IP address
|
||||
String ip = request.getRemoteAddr();
|
||||
if (useProxies == null) {
|
||||
useProxies = ConfigurationManager.getBooleanProperty("useProxies", false);
|
||||
}
|
||||
if(useProxies && request.getHeader("X-Forwarded-For") != null)
|
||||
{
|
||||
// This header is a comma delimited list
|
||||
for(String xfip : request.getHeader("X-Forwarded-For").split(","))
|
||||
{
|
||||
if(!request.getHeader("X-Forwarded-For").contains(ip))
|
||||
{
|
||||
ip = xfip.trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
context.setExtraLogInfo("session_id=" + request.getSession().getId() + ":ip_addr=" + ip);
|
||||
*/
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
}
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.exception;
|
||||
package org.dspace.app.iiif.exception;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model;
|
||||
package org.dspace.app.iiif.model;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -27,7 +27,7 @@ import org.springframework.web.context.annotation.RequestScope;
|
||||
*/
|
||||
@RequestScope
|
||||
@Component
|
||||
public class AnnotationListGenerator implements org.dspace.app.rest.iiif.model.generator.IIIFResource {
|
||||
public class AnnotationListGenerator implements IIIFResource {
|
||||
|
||||
private String identifier;
|
||||
private List<Annotation> annotations = new ArrayList<>();
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import de.digitalcollections.iiif.model.enums.ViewingHint;
|
||||
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -49,7 +49,7 @@ public class CanvasItemsGenerator implements IIIFResource {
|
||||
* for display or download by a human user. This is typically going to be a PDF file.
|
||||
* @param otherContent generator for the resource
|
||||
*/
|
||||
public void addRendering(org.dspace.app.rest.iiif.model.generator.ExternalLinksGenerator otherContent) {
|
||||
public void addRendering(ExternalLinksGenerator otherContent) {
|
||||
this.renderings.add((OtherContent) otherContent.generateResource());
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public class CanvasItemsGenerator implements IIIFResource {
|
||||
* Adds a single {@code Canvas} to the sequence.
|
||||
* @param canvas generator for canvas
|
||||
*/
|
||||
public String addCanvas(org.dspace.app.rest.iiif.model.generator.CanvasGenerator canvas) {
|
||||
public String addCanvas(CanvasGenerator canvas) {
|
||||
Canvas resource = (Canvas) canvas.generateResource();
|
||||
this.canvas.add(resource);
|
||||
return resource.getIdentifier().toString();
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import de.digitalcollections.iiif.model.openannotation.ContentAsText;
|
||||
import de.digitalcollections.iiif.model.sharedcanvas.Resource;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import de.digitalcollections.iiif.model.sharedcanvas.Resource;
|
||||
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import de.digitalcollections.iiif.model.Service;
|
||||
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
/**
|
||||
* Interface for iiif value generators.
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@@ -19,7 +19,7 @@ import de.digitalcollections.iiif.model.sharedcanvas.Resource;
|
||||
* field of annotations with motivation "sc:painting". Image resources, and only image resources,
|
||||
* are included in the image's property of the canvas. This changes in API version 3.0.
|
||||
*/
|
||||
public class ImageContentGenerator implements IIIFResource {
|
||||
public class ImageContentGenerator implements IIIFResource {
|
||||
|
||||
private final ImageContent imageContent;
|
||||
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import de.digitalcollections.iiif.model.Service;
|
||||
import de.digitalcollections.iiif.model.image.ImageService;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import de.digitalcollections.iiif.model.MetadataEntry;
|
||||
import de.digitalcollections.iiif.model.PropertyValue;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import de.digitalcollections.iiif.model.PropertyValue;
|
||||
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -14,7 +14,7 @@ import javax.validation.constraints.NotNull;
|
||||
import de.digitalcollections.iiif.model.sharedcanvas.Canvas;
|
||||
import de.digitalcollections.iiif.model.sharedcanvas.Range;
|
||||
import de.digitalcollections.iiif.model.sharedcanvas.Resource;
|
||||
import org.dspace.app.rest.iiif.service.RangeService;
|
||||
import org.dspace.app.iiif.service.RangeService;
|
||||
|
||||
/**
|
||||
* This generator wraps the domain model for IIIF {@code ranges}.
|
||||
@@ -25,7 +25,7 @@ import org.dspace.app.rest.iiif.service.RangeService;
|
||||
* This is used to populate the "structures" element of the Manifest. The structure is derived from the iiif.toc
|
||||
* metadata and the ordered sequence of bitstreams (canvases)
|
||||
*/
|
||||
public class RangeGenerator implements org.dspace.app.rest.iiif.model.generator.IIIFResource {
|
||||
public class RangeGenerator implements IIIFResource {
|
||||
|
||||
private String identifier;
|
||||
private String label;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.model.generator;
|
||||
package org.dspace.app.iiif.model.generator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@@ -5,13 +5,13 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.dspace.app.rest.iiif.service.util.IIIFUtils;
|
||||
import org.dspace.app.rest.iiif.service.util.ImageProfileUtil;
|
||||
import org.dspace.app.rest.iiif.service.util.ThumbProfileUtil;
|
||||
import org.dspace.app.iiif.service.utils.IIIFUtils;
|
||||
import org.dspace.app.iiif.service.utils.ImageProfileUtil;
|
||||
import org.dspace.app.iiif.service.utils.ThumbProfileUtil;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@@ -5,16 +5,16 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.dspace.app.rest.iiif.model.generator.AnnotationGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.AnnotationListGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ExternalLinksGenerator;
|
||||
import org.dspace.app.rest.iiif.service.util.IIIFUtils;
|
||||
import org.dspace.app.iiif.model.generator.AnnotationGenerator;
|
||||
import org.dspace.app.iiif.model.generator.AnnotationListGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ExternalLinksGenerator;
|
||||
import org.dspace.app.iiif.service.utils.IIIFUtils;
|
||||
import org.dspace.content.Bitstream;
|
||||
import org.dspace.content.BitstreamFormat;
|
||||
import org.dspace.content.Item;
|
@@ -5,12 +5,12 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
||||
import org.dspace.app.rest.iiif.model.generator.CanvasGenerator;
|
||||
import org.dspace.app.rest.iiif.service.util.IIIFUtils;
|
||||
import org.dspace.app.iiif.model.generator.CanvasGenerator;
|
||||
import org.dspace.app.iiif.service.utils.IIIFUtils;
|
||||
import org.dspace.content.Bitstream;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.core.Context;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -13,10 +13,10 @@ import java.util.UUID;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.dspace.app.rest.iiif.model.generator.CanvasGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ImageContentGenerator;
|
||||
import org.dspace.app.rest.iiif.service.util.BitstreamIIIFVirtualMetadata;
|
||||
import org.dspace.app.rest.iiif.service.util.IIIFUtils;
|
||||
import org.dspace.app.iiif.model.generator.CanvasGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ImageContentGenerator;
|
||||
import org.dspace.app.iiif.service.utils.BitstreamIIIFVirtualMetadata;
|
||||
import org.dspace.app.iiif.service.utils.IIIFUtils;
|
||||
import org.dspace.content.Bitstream;
|
||||
import org.dspace.content.Bundle;
|
||||
import org.dspace.content.Item;
|
@@ -5,13 +5,13 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.dspace.app.rest.iiif.model.generator.ImageContentGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ImageServiceGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ProfileGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ImageContentGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ImageServiceGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ProfileGenerator;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.context.annotation.RequestScope;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
@@ -15,12 +15,12 @@ import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.dspace.app.rest.iiif.model.generator.CanvasGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ContentSearchGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ImageContentGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ManifestGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.RangeGenerator;
|
||||
import org.dspace.app.rest.iiif.service.util.IIIFUtils;
|
||||
import org.dspace.app.iiif.model.generator.CanvasGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ContentSearchGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ImageContentGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ManifestGenerator;
|
||||
import org.dspace.app.iiif.model.generator.RangeGenerator;
|
||||
import org.dspace.app.iiif.service.utils.IIIFUtils;
|
||||
import org.dspace.app.util.service.MetadataExposureService;
|
||||
import org.dspace.content.Bitstream;
|
||||
import org.dspace.content.Bundle;
|
@@ -5,9 +5,9 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import org.dspace.app.rest.iiif.model.generator.RangeGenerator;
|
||||
import org.dspace.app.iiif.model.generator.RangeGenerator;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
@@ -5,9 +5,9 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import org.dspace.app.rest.iiif.model.generator.ExternalLinksGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ExternalLinksGenerator;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
import org.springframework.stereotype.Component;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import java.util.UUID;
|
||||
|
@@ -5,13 +5,13 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.dspace.app.rest.iiif.exception.NotImplementedException;
|
||||
import org.dspace.app.iiif.exception.NotImplementedException;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
@@ -5,10 +5,10 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import org.dspace.app.rest.iiif.model.generator.AnnotationGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ExternalLinksGenerator;
|
||||
import org.dspace.app.iiif.model.generator.AnnotationGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ExternalLinksGenerator;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
import org.springframework.stereotype.Component;
|
@@ -5,15 +5,15 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.dspace.app.rest.iiif.model.generator.CanvasGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.CanvasItemsGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ExternalLinksGenerator;
|
||||
import org.dspace.app.iiif.model.generator.CanvasGenerator;
|
||||
import org.dspace.app.iiif.model.generator.CanvasItemsGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ExternalLinksGenerator;
|
||||
import org.dspace.content.Bitstream;
|
||||
import org.dspace.content.Bundle;
|
||||
import org.dspace.content.Item;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service;
|
||||
package org.dspace.app.iiif.service;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
@@ -29,12 +29,12 @@ import org.apache.solr.client.solrj.impl.NoOpResponseParser;
|
||||
import org.apache.solr.client.solrj.request.QueryRequest;
|
||||
import org.apache.solr.common.params.CommonParams;
|
||||
import org.apache.solr.common.util.NamedList;
|
||||
import org.dspace.app.rest.iiif.model.generator.AnnotationGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.CanvasGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ContentAsTextGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.ManifestGenerator;
|
||||
import org.dspace.app.rest.iiif.model.generator.SearchResultGenerator;
|
||||
import org.dspace.app.rest.iiif.service.util.IIIFUtils;
|
||||
import org.dspace.app.iiif.model.generator.AnnotationGenerator;
|
||||
import org.dspace.app.iiif.model.generator.CanvasGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ContentAsTextGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ManifestGenerator;
|
||||
import org.dspace.app.iiif.model.generator.SearchResultGenerator;
|
||||
import org.dspace.app.iiif.service.utils.IIIFUtils;
|
||||
import org.dspace.discovery.SolrSearchCore;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service.util;
|
||||
package org.dspace.app.iiif.service.utils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service.util;
|
||||
package org.dspace.app.iiif.service.utils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service.util;
|
||||
package org.dspace.app.iiif.service.utils;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collections;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service.util;
|
||||
package org.dspace.app.iiif.service.utils;
|
||||
|
||||
import java.util.List;
|
||||
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service.util;
|
||||
package org.dspace.app.iiif.service.utils;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collections;
|
@@ -5,7 +5,7 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service.util;
|
||||
package org.dspace.app.iiif.service.utils;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
@@ -19,7 +19,7 @@ import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import de.digitalcollections.iiif.model.sharedcanvas.Resource;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.dspace.app.rest.iiif.model.ObjectMapperFactory;
|
||||
import org.dspace.app.iiif.model.ObjectMapperFactory;
|
||||
import org.dspace.content.Bitstream;
|
||||
import org.dspace.content.BitstreamFormat;
|
||||
import org.dspace.content.Bundle;
|
@@ -5,9 +5,9 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service.util;
|
||||
package org.dspace.app.iiif.service.utils;
|
||||
|
||||
import org.dspace.app.rest.iiif.model.generator.ProfileGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ProfileGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
@@ -5,9 +5,9 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.service.util;
|
||||
package org.dspace.app.iiif.service.utils;
|
||||
|
||||
import org.dspace.app.rest.iiif.model.generator.ProfileGenerator;
|
||||
import org.dspace.app.iiif.model.generator.ProfileGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
@@ -364,6 +364,11 @@
|
||||
<artifactId>dspace-services</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dspace</groupId>
|
||||
<artifactId>dspace-iiif</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- DSpace modules to deploy (this modules are all optional, but add features/endpoints to webapp) -->
|
||||
<!-- You may choose to comment out any of these modules if you do not want/need its features -->
|
||||
<dependency>
|
||||
@@ -493,38 +498,6 @@
|
||||
<artifactId>ehcache</artifactId>
|
||||
<version>3.4.0</version>
|
||||
</dependency>
|
||||
<!-- iiif models. -->
|
||||
<dependency>
|
||||
<groupId>de.digitalcollections.iiif</groupId>
|
||||
<artifactId>iiif-apis</artifactId>
|
||||
<version>0.3.9</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.javassist</groupId>
|
||||
<artifactId>javassist</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-core</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>org.dmfs</groupId>
|
||||
<artifactId>iterators</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.fasterxml.jackson.module</groupId>
|
||||
<artifactId>jackson-module-parameter-names</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.solr</groupId>
|
||||
<artifactId>solr-cell</artifactId>
|
||||
|
@@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
|
||||
import org.springframework.cache.annotation.EnableCaching;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.hateoas.server.LinkRelationProvider;
|
||||
@@ -56,6 +57,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableScheduling
|
||||
@EnableCaching
|
||||
public class Application extends SpringBootServletInitializer {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(Application.class);
|
||||
|
@@ -5,7 +5,8 @@
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.cache;
|
||||
|
||||
package org.dspace.app.rest.cache;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -18,7 +19,7 @@ public class CacheLogger implements CacheEventListener<Object, Object> {
|
||||
@Override
|
||||
public void onEvent(CacheEvent<?, ?> cacheEvent) {
|
||||
log.info("Cache Event Type: {} | Manifest Key: {} ",
|
||||
cacheEvent.getType(), cacheEvent.getKey());
|
||||
cacheEvent.getType(), cacheEvent.getKey());
|
||||
}
|
||||
|
||||
}
|
@@ -1,24 +0,0 @@
|
||||
/**
|
||||
* The contents of this file are subject to the license and copyright
|
||||
* detailed in the LICENSE and NOTICE files at the root of the source
|
||||
* tree and available online at
|
||||
*
|
||||
* http://www.dspace.org/license/
|
||||
*/
|
||||
package org.dspace.app.rest.iiif.cache;
|
||||
|
||||
import org.springframework.cache.annotation.EnableCaching;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* Enables Spring cache support. The configuration file is defined in
|
||||
* application properties.
|
||||
* <p>spring.cache.jcache.config=classpath:iiif/cache/ehcache.xml</p>
|
||||
* TODO: Before the cache is used in production there must be a way to
|
||||
* evict from the cache whenever a dspace item, bundle or bitstream is changed.
|
||||
*/
|
||||
@Configuration
|
||||
@EnableCaching
|
||||
public class CacheConfig {
|
||||
// Spring boot cache configuration.
|
||||
}
|
@@ -25,7 +25,7 @@ import org.springframework.data.web.config.EnableSpringDataWebSupport;
|
||||
@Configuration
|
||||
@EnableSpringDataWebSupport
|
||||
@ComponentScan( {"org.dspace.app.rest.converter", "org.dspace.app.rest.repository", "org.dspace.app.rest.utils",
|
||||
"org.dspace.app.configuration", "org.dspace.iiif"})
|
||||
"org.dspace.app.configuration", "org.dspace.iiif", "org.dspace.app.iiif"})
|
||||
public class ApplicationConfig {
|
||||
// Allowed CORS origins ("Access-Control-Allow-Origin" header)
|
||||
// Can be overridden in DSpace configuration
|
||||
|
@@ -16,7 +16,7 @@
|
||||
<cache-template name="iiif-default">
|
||||
<listeners>
|
||||
<listener>
|
||||
<class>org.dspace.app.rest.iiif.cache.CacheLogger</class>
|
||||
<class>org.dspace.app.rest.cache.CacheLogger</class>
|
||||
<event-firing-mode>ASYNCHRONOUS</event-firing-mode>
|
||||
<event-ordering-mode>UNORDERED</event-ordering-mode>
|
||||
<events-to-fire-on>CREATED</events-to-fire-on>
|
||||
|
@@ -204,6 +204,11 @@
|
||||
<artifactId>dspace-rdf</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dspace</groupId>
|
||||
<artifactId>dspace-iiif</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dspace</groupId>
|
||||
<artifactId>dspace-services</artifactId>
|
||||
|
20
pom.xml
20
pom.xml
@@ -823,6 +823,21 @@
|
||||
</modules>
|
||||
</profile>
|
||||
|
||||
<!--
|
||||
Builds IIIF extension for DSpace
|
||||
-->
|
||||
<profile>
|
||||
<id>dspace-iiif</id>
|
||||
<activation>
|
||||
<file>
|
||||
<exists>dspace-iiif/pom.xml</exists>
|
||||
</file>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>dspace-iiif</module>
|
||||
</modules>
|
||||
</profile>
|
||||
|
||||
<!-- REST Jersey (Deprecated REST API from DSpace 6.x or below) -->
|
||||
<!-- As this module is deprecated, it only builds if you activate it via -Pdspace-rest -->
|
||||
<profile>
|
||||
@@ -1043,6 +1058,11 @@
|
||||
<artifactId>dspace-rdf</artifactId>
|
||||
<version>7.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dspace</groupId>
|
||||
<artifactId>dspace-iiif</artifactId>
|
||||
<version>7.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dspace</groupId>
|
||||
<artifactId>dspace-server-webapp</artifactId>
|
||||
|
Reference in New Issue
Block a user