Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OCFL 2.1.0 and Update CI #60

Merged
merged 13 commits into from
Jul 2, 2024
22 changes: 22 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
* text
*.json text
*.java text diff=java

# Keep the line endings for some test files by setting to binary
# This is to allow tests to pass in windows and *nix
*.0 binary
ADMINMD binary
BIB0 binary
props binary
TECH0 binary
TECH1 binary

# Images
*REF binary
*THUMB binary
*MASTER0 binary

# Fedora 6
*.nt eol=lf
*.json eol=lf
*.sha512 eol=lf
29 changes: 16 additions & 13 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,24 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
os: [ubuntu-latest, windows-latest]
java: ['11']
experimental: [false]
include:
- java: 17
os: ubuntu-latest
experimental: true
steps:
- name: Git support longpaths
run: git config --global core.longpaths true
- name: Checkout
uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: 11
- name: Cache Maven packages
uses: actions/cache@v2
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
distribution: 'temurin'
java-version: ${{ matrix.java }}
cache: 'maven'
- name: Build with Maven
run: mvn -B -U clean install

Expand All @@ -43,10 +45,11 @@ jobs:
- name: Git support longpaths
run: git config --global core.longpaths true
- name: Checkout fcrepo
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v1
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 11
server-id: sonatype-nexus-snapshots
server-username: MAVEN_USERNAME
Expand Down
45 changes: 19 additions & 26 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<compiler.plugin.version>3.8.0</compiler.plugin.version>
<fcrepo-build-tools.version>6.0.0</fcrepo-build-tools.version>
<fcrepo-migration-utils.version>6.3.0</fcrepo-migration-utils.version>
<fcrepo.storage.ocfl.version>6.3.0</fcrepo.storage.ocfl.version>
<ocfl-java.version>1.5.0</ocfl-java.version>
<fcrepo-migration-utils.version>6.6.0-SNAPSHOT</fcrepo-migration-utils.version>
<fcrepo.storage.ocfl.version>6.4.0-SNAPSHOT</fcrepo.storage.ocfl.version>
<ocfl-java.version>2.1.0</ocfl-java.version>
<gpg.plugin.version>1.6</gpg.plugin.version>
<jackson.version>2.11.1</jackson.version>
<jackson.version>2.17.1</jackson.version>
<checkstyle.plugin.version>3.1.1</checkstyle.plugin.version>
<license.plugin.version>3.0</license.plugin.version>
<project.java.source>11</project.java.source>
Expand Down Expand Up @@ -223,7 +223,7 @@
</dependency>

<dependency>
<groupId>edu.wisc.library.ocfl</groupId>
<groupId>io.ocfl</groupId>
<artifactId>ocfl-java-aws</artifactId>
<version>${ocfl-java.version}</version>
<!--
Expand All @@ -248,7 +248,7 @@
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
<version>2.3.32</version>
</dependency>

<dependency>
Expand Down Expand Up @@ -280,59 +280,52 @@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.0-jre</version>
<version>33.2.1-jre</version>
</dependency>

<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.5.2</version>
<version>4.7.6</version>
</dependency>

<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
<version>2.16.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
<version>3.14.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.14</version>
<version>1.17.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
<version>2.0.12</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.6</version>
</dependency>

<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.2</version>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.19.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.22.0</version>
<version>3.26.0</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/fcrepo/migration/validator/Driver.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
* @author dbernstein
*/
@CommandLine.Command(name = "fcrepo-migration-validator", mixinStandardHelpOptions = true, sortOptions = false,
version = "0.1.0-SNAPSHOT")
version = "Fedora Migration Validator 1.3.0")
public class Driver implements Callable<Integer> {

private static final Logger LOGGER = getLogger(Driver.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import java.io.File;
import java.nio.file.Path;

import edu.wisc.library.ocfl.api.OcflRepository;
import io.ocfl.api.OcflRepository;
import org.fcrepo.migration.validator.impl.F6DigestAlgorithm;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
*/
package org.fcrepo.migration.validator.api;

import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.List;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -42,6 +44,21 @@ public String getObjectId() {
return results.stream().findFirst().map(ValidationResult::getSourceObjectId).orElse("unknown");
}

/**
* This method returns an encoded version of the object id for use as a filesystem path
* @return the encoded object-id
*/
public String getEncodedObjectId() {
if (results == null || results.isEmpty()) {
return "unknown";
}

return results.stream().findFirst()
.map(ValidationResult::getSourceObjectId)
.map(objectId -> URLEncoder.encode(objectId, Charset.defaultCharset()))
.orElse("unknown");
}

/**
* This method indicates if the result set has any errors
* @return true if there are validation errors
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/
package org.fcrepo.migration.validator.api;

import edu.wisc.library.ocfl.api.OcflRepository;
import io.ocfl.api.OcflRepository;

/**
* An interface for performing validations across the repository.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import com.google.common.hash.Funnels;
import com.google.common.hash.HashCode;
import com.google.common.io.ByteStreams;
import edu.wisc.library.ocfl.api.model.OcflObjectVersion;
import io.ocfl.api.model.OcflObjectVersion;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.RDFNode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@
*/
public abstract class ValidationTask implements Supplier<ValidationTask> {

abstract public Optional<String> getPid();
public abstract Optional<String> getPid();
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.google.common.base.Suppliers;
import edu.wisc.library.ocfl.api.MutableOcflRepository;
import edu.wisc.library.ocfl.api.OcflRepository;
import edu.wisc.library.ocfl.core.OcflRepositoryBuilder;
import edu.wisc.library.ocfl.core.extension.storage.layout.config.HashedNTupleLayoutConfig;
import edu.wisc.library.ocfl.core.path.mapper.LogicalPathMappers;
import edu.wisc.library.ocfl.core.storage.OcflStorageBuilder;
import io.ocfl.api.MutableOcflRepository;
import io.ocfl.api.OcflRepository;
import io.ocfl.core.OcflRepositoryBuilder;
import io.ocfl.core.extension.storage.layout.config.HashedNTupleLayoutConfig;
import io.ocfl.core.path.mapper.LogicalPathMappers;
import io.ocfl.core.storage.OcflStorageBuilder;
import org.apache.commons.lang3.SystemUtils;
import org.fcrepo.migration.ObjectSource;
import org.fcrepo.migration.foxml.AkubraFSIDResolver;
Expand All @@ -40,8 +40,8 @@
import java.util.function.Supplier;

import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS;
import static edu.wisc.library.ocfl.api.util.Enforce.expressionTrue;
import static edu.wisc.library.ocfl.api.util.Enforce.notNull;
import static io.ocfl.api.util.Enforce.expressionTrue;
import static io.ocfl.api.util.Enforce.notNull;

/**
* A helper class for configuring and creating application components.
Expand Down Expand Up @@ -124,16 +124,17 @@ private ObjectSource doObjectSource() throws IOException {

private MutableOcflRepository repository(final Fedora3ValidationConfig config, final Path workDir) {
final var storage = OcflStorageBuilder.builder()
.fileSystem(config.getOcflRepositoryRootDirectory().toPath())
.build();
.fileSystem(config.getOcflRepositoryRootDirectory().toPath())
.build();
final var logicalPathMapper = SystemUtils.IS_OS_WINDOWS ?
LogicalPathMappers.percentEncodingWindowsMapper() : LogicalPathMappers.percentEncodingLinuxMapper();
LogicalPathMappers.percentEncodingWindowsMapper() :
LogicalPathMappers.percentEncodingLinuxMapper();

return new OcflRepositoryBuilder().storage(storage)
.defaultLayoutConfig(new HashedNTupleLayoutConfig())
.logicalPathMapper(logicalPathMapper)
.workDir(workDir)
.buildMutable();
.defaultLayoutConfig(new HashedNTupleLayoutConfig())
.logicalPathMapper(logicalPathMapper)
.workDir(workDir)
.buildMutable();
}

/**
Expand Down Expand Up @@ -164,7 +165,7 @@ public OcflObjectSessionFactory ocflObjectSessionFactory() {
.maximumSize(512)
.expireAfterAccess(Duration.ofMinutes(10))
.build();
// https://jira.lyrasis.org/browse/FCREPO-3632:

return new DefaultOcflObjectSessionFactory(repositorySupplier.get(),
workDirectory,
objectMapper,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import java.util.regex.Pattern;
import java.util.stream.Stream;

import edu.wisc.library.ocfl.api.OcflRepository;
import io.ocfl.api.OcflRepository;
import org.fcrepo.migration.FedoraObjectProcessor;
import org.fcrepo.migration.ObjectSource;
import org.fcrepo.migration.validator.api.RepositoryValidator;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.google.common.hash.HashFunction;
import com.google.common.hash.Hasher;
import com.google.common.hash.Hashing;
import edu.wisc.library.ocfl.api.model.DigestAlgorithm;
import io.ocfl.api.model.DigestAlgorithm;

/**
* Supported digest algorithms for ocfl
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,11 @@

import java.io.FileWriter;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.nio.file.Path;
import java.util.List;
import java.util.function.UnaryOperator;

import static org.fcrepo.migration.validator.api.ValidationResult.Status.OK;
import static org.fcrepo.migration.validator.impl.ValidationResultUtils.resolvePathToJsonResult;
Expand All @@ -30,6 +33,7 @@ public class FileSystemValidationResultWriter implements ValidationResultWriter

private final Path validationRoot;
private final boolean writeFailureOnly;
private final UnaryOperator<String> pathEncoder;

/**
* Constructor
Expand All @@ -41,6 +45,8 @@ public FileSystemValidationResultWriter(final Path validationRoot, final boolean
this.validationRoot = validationRoot;
this.writeFailureOnly = writeFailureOnly;
validationRoot.toFile().mkdirs();

pathEncoder = original -> URLEncoder.encode(original, Charset.defaultCharset());
}

@Override
Expand All @@ -51,8 +57,8 @@ public void write(final List<ValidationResult> results) {
continue;
}

LOGGER.debug("Writing of results here: {}", result);
final var jsonFilePath = this.validationRoot.resolve(resolvePathToJsonResult(result));
final var jsonFilePath = this.validationRoot.resolve(resolvePathToJsonResult(result, pathEncoder));
LOGGER.debug("Writing of results here: {}", jsonFilePath);
final var file = jsonFilePath.toFile();
file.getParentFile().mkdirs();
try (final var writer = new FileWriter(file)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

import edu.wisc.library.ocfl.api.OcflRepository;
import edu.wisc.library.ocfl.api.model.ObjectVersionId;
import io.ocfl.api.OcflRepository;
import io.ocfl.api.model.ObjectVersionId;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.riot.RDFFormat;
Expand Down
Loading
Loading