Skip to content

Commit

Permalink
Merge branch 'release/1.0.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
infeo committed Oct 10, 2018
2 parents a9bb935 + 40acb17 commit 7eef2a2
Show file tree
Hide file tree
Showing 25 changed files with 864 additions and 85 deletions.
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ script:
- mvn clean test jacoco:report verify -Dsurefire.useFile=false -Pcoverage
after_success:
- jdk_switcher use oraclejdk8
- curl -o ~/codacy-coverage-reporter-assembly-latest.jar https://oss.sonatype.org/service/local/repositories/releases/content/com/codacy/codacy-coverage-reporter/2.0.1/codacy-coverage-reporter-2.0.1-assembly.jar
- $JAVA_HOME/bin/java -cp ~/codacy-coverage-reporter-assembly-latest.jar com.codacy.CodacyCoverageReporter -l Java -r target/site/jacoco/jacoco.xml
- curl -o ~/codacy-coverage-reporter-assembly-latest.jar https://oss.sonatype.org/service/local/repositories/releases/content/com/codacy/codacy-coverage-reporter/4.0.1/codacy-coverage-reporter-4.0.1-assembly.jar
- $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter-assembly-latest.jar report -l Java -r target/site/jacoco/jacoco.xml
cache:
directories:
- $HOME/.m2
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Build Status](https://travis-ci.org/cryptomator/fuse-nio-adapter.svg?branch=master)](https://travis-ci.org/cryptomator/fuse-nio-adapter)
[![Build Status](https://travis-ci.org/cryptomator/fuse-nio-adapter.svg?branch=develop)](https://travis-ci.org/cryptomator/fuse-nio-adapter)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/47914e82b4c54f39b6150c24b83d7d09)](https://www.codacy.com/app/cryptomator/fuse-nio-adapter?utm_source=github.com&utm_medium=referral&utm_content=cryptomator/fuse-nio-adapter&utm_campaign=Badge_Grade)
[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/47914e82b4c54f39b6150c24b83d7d09)](https://www.codacy.com/app/cryptomator/fuse-nio-adapter?utm_source=github.com&utm_medium=referral&utm_content=cryptomator/fuse-nio-adapter&utm_campaign=Badge_Coverage)
[![Known Vulnerabilities](https://snyk.io/test/github/cryptomator/fuse-nio-adapter/badge.svg)](https://snyk.io/test/github/cryptomator/fuse-nio-adapter)
Expand Down
46 changes: 9 additions & 37 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId>
<artifactId>fuse-nio-adapter</artifactId>
<version>0.1.5</version>
<version>1.0.0</version>
<name>FUSE-NIO-Adapter</name>
<description>Access resources at a given NIO path via FUSE.</description>
<url>https://github.com/cryptomator/fuse-nio-adapter</url>
Expand All @@ -15,15 +15,14 @@
</scm>

<properties>
<jnrfuse.version>0.5.1</jnrfuse.version>
<jnrffi.version>2.1.7</jnrffi.version>
<jnrfuse.version>0.5.2.1</jnrfuse.version>
<jnrconstants.version>0.9.9</jnrconstants.version>
<jnrposix.version>3.0.45</jnrposix.version>
<dagger.version>2.15</dagger.version>
<guava.version>25.0-jre</guava.version>
<slf4j.version>1.7.25</slf4j.version>
<junit.jupiter.version>5.0.2</junit.jupiter.version>
<junit.platform.version>1.0.2</junit.platform.version>
<junit.jupiter.version>5.3.0</junit.jupiter.version>
<junit.platform.version>1.3.0</junit.platform.version>
<mockito.version>2.11.0</mockito.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
Expand All @@ -48,32 +47,12 @@

<repositories>
<repository>
<id>central</id>
<id>bintray</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
</repository>
</repositories>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.github.jnr</groupId>
<artifactId>jnr-ffi</artifactId>
<version>${jnrffi.version}</version>
</dependency>
<dependency>
<groupId>com.github.jnr</groupId>
<artifactId>jnr-constants</artifactId>
<version>${jnrconstants.version}</version>
</dependency>
<dependency>
<groupId>com.github.jnr</groupId>
<artifactId>jnr-posix</artifactId>
<version>${jnrposix.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<!-- FUSE -->
<dependency>
Expand Down Expand Up @@ -151,19 +130,12 @@
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version> <!-- 2.20 causes memory leaks, see http://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven -->
<version>2.22.0</version>
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>${junit.platform.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Expand All @@ -176,7 +148,7 @@
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>3.1.2</version>
<version>3.2.1</version>
<configuration>
<cveValidForHours>24</cveValidForHours>
<failBuildOnCVSS>0</failBuildOnCVSS>
Expand Down Expand Up @@ -205,7 +177,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<version>0.8.1</version>
<executions>
<execution>
<id>prepare-agent</id>
Expand Down Expand Up @@ -243,7 +215,7 @@
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/org/cryptomator/frontend/fuse/MacUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.cryptomator.frontend.fuse;

import java.nio.file.Path;

public class MacUtil {

public static final String APPLEDOUBLE_PREFIX = "._";
public static final String DSSTORE_FILENAME = ".DS_Store";


/**
* Checks if the resource name of the given path is a MacOS specific AppleDouble or DS_Store filename
*
* @param p the path of the resource to be checked
* @return true if the resource name fits into the AppleDpuble or DS_Store naming scheme
*/
public static boolean isAppleDoubleOrDStoreName(Path p) {
String filename = p.getFileName().toString();
return filename.startsWith(APPLEDOUBLE_PREFIX) || filename.equals(DSSTORE_FILENAME);
}

}
22 changes: 16 additions & 6 deletions src/main/java/org/cryptomator/frontend/fuse/ReadOnlyAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
import jnr.ffi.Pointer;
import jnr.ffi.types.off_t;
import jnr.ffi.types.size_t;
import org.cryptomator.frontend.fuse.locks.LockManager;
import org.cryptomator.frontend.fuse.locks.DataLock;
import org.cryptomator.frontend.fuse.locks.PathLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.serce.jnrfuse.ErrorCodes;
Expand All @@ -40,14 +43,16 @@ public class ReadOnlyAdapter extends FuseStubFS implements FuseNioAdapter {
private static final int BLOCKSIZE = 4096;
protected final Path root;
protected final FileStore fileStore;
protected final LockManager lockManager;
private final ReadOnlyDirectoryHandler dirHandler;
private final ReadOnlyFileHandler fileHandler;
private final FileAttributesUtil attrUtil;

@Inject
public ReadOnlyAdapter(@Named("root") Path root, FileStore fileStore, ReadOnlyDirectoryHandler dirHandler, ReadOnlyFileHandler fileHandler, FileAttributesUtil attrUtil) {
public ReadOnlyAdapter(@Named("root") Path root, FileStore fileStore, LockManager lockManager, ReadOnlyDirectoryHandler dirHandler, ReadOnlyFileHandler fileHandler, FileAttributesUtil attrUtil) {
this.root = root;
this.fileStore = fileStore;
this.lockManager = lockManager;
this.dirHandler = dirHandler;
this.fileHandler = fileHandler;
this.attrUtil = attrUtil;
Expand Down Expand Up @@ -112,7 +117,8 @@ protected int checkAccess(Path path, Set<AccessMode> requiredAccessModes, Set<Ac

@Override
public int getattr(String path, FileStat stat) {
try {
try (PathLock pathLock = lockManager.createPathLock(path).forReading();
DataLock dataLock = pathLock.lockDataForReading()) {
Path node = resolvePath(path);
BasicFileAttributes attrs = Files.readAttributes(node, BasicFileAttributes.class);
if (attrs.isDirectory()) {
Expand All @@ -131,7 +137,8 @@ public int getattr(String path, FileStat stat) {

@Override
public int readdir(String path, Pointer buf, FuseFillDir filler, @off_t long offset, FuseFileInfo fi) {
try {
try (PathLock pathLock = lockManager.createPathLock(path).forReading();
DataLock dataLock = pathLock.lockDataForReading()) {
Path node = resolvePath(path);
return dirHandler.readdir(node, buf, filler, offset, fi);
} catch (NotDirectoryException e) {
Expand All @@ -144,7 +151,8 @@ public int readdir(String path, Pointer buf, FuseFillDir filler, @off_t long off

@Override
public int open(String path, FuseFileInfo fi) {
try {
try (PathLock pathLock = lockManager.createPathLock(path).forReading();
DataLock dataLock = pathLock.lockDataForReading()) {
Path node = resolvePath(path);
// TODO do we need to distinguish files vs. dirs? https://github.com/libfuse/libfuse/wiki/Invariants
if (Files.isDirectory(node)) {
Expand All @@ -162,7 +170,8 @@ public int open(String path, FuseFileInfo fi) {

@Override
public int read(String path, Pointer buf, @size_t long size, @off_t long offset, FuseFileInfo fi) {
try {
try (PathLock pathLock = lockManager.createPathLock(path).forReading();
DataLock dataLock = pathLock.lockDataForReading()) {
Path node = resolvePath(path);
assert Files.exists(node);
return fileHandler.read(node, buf, size, offset, fi);
Expand All @@ -174,7 +183,8 @@ public int read(String path, Pointer buf, @size_t long size, @off_t long offset,

@Override
public int release(String path, FuseFileInfo fi) {
try {
try (PathLock pathLock = lockManager.createPathLock(path).forReading();
DataLock dataLock = pathLock.lockDataForReading()) {
Path node = resolvePath(path);
return fileHandler.release(node, fi);
} catch (RuntimeException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ public int release(Path path, FuseFileInfo fi) {

public int getattr(Path node, BasicFileAttributes attrs, FileStat stat) {
stat.st_mode.set(FileStat.S_IFREG | 0444);
stat.st_nlink.set(1);
attrUtil.copyBasicFileAttributesFromNioToFuse(attrs, stat);
return 0;
}
Expand Down
Loading

0 comments on commit 7eef2a2

Please sign in to comment.