aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiamondm <diamondm@google.com>2017-06-13 09:43:36 -0700
committerRon Shapiro <ronshapiro@google.com>2017-06-14 16:21:33 -0400
commit4f8012675f60f0508fc6e422076a0a141db60213 (patch)
treeac8b87ebcf18494b55f12412b0ea9dafc9f03bc8
parent8df6f021d2f7ad713f2546412db57eb3e87bae62 (diff)
downloadjimfs-4f8012675f60f0508fc6e422076a0a141db60213.tar.gz
Introduce a meaningful .toString() for JimFS's Configuration class. Standard configurations have short, meaningful names (e.g. "Configuration{Unix}") while custom instances include the relevant details of the configuration.
Resolves https://github.com/google/jimfs/issues/45 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=158857133
-rw-r--r--jimfs/src/main/java/com/google/common/jimfs/Configuration.java57
-rw-r--r--jimfs/src/main/java/com/google/common/jimfs/PathType.java5
2 files changed, 59 insertions, 3 deletions
diff --git a/jimfs/src/main/java/com/google/common/jimfs/Configuration.java b/jimfs/src/main/java/com/google/common/jimfs/Configuration.java
index 9178436..4fab727 100644
--- a/jimfs/src/main/java/com/google/common/jimfs/Configuration.java
+++ b/jimfs/src/main/java/com/google/common/jimfs/Configuration.java
@@ -26,11 +26,11 @@ import static com.google.common.jimfs.PathNormalization.CASE_FOLD_ASCII;
import static com.google.common.jimfs.PathNormalization.NFC;
import static com.google.common.jimfs.PathNormalization.NFD;
+import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
-
import java.nio.channels.FileChannel;
import java.nio.file.FileSystem;
import java.nio.file.InvalidPathException;
@@ -44,7 +44,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
-
import javax.annotation.Nullable;
/**
@@ -89,6 +88,7 @@ public final class Configuration {
private static final class UnixHolder {
private static final Configuration UNIX =
Configuration.builder(PathType.unix())
+ .setDisplayName("Unix")
.setRoots("/")
.setWorkingDirectory("/work")
.setAttributeViews("basic")
@@ -135,7 +135,9 @@ public final class Configuration {
private static final class OsxHolder {
private static final Configuration OS_X =
- unix().toBuilder()
+ unix()
+ .toBuilder()
+ .setDisplayName("OSX")
.setNameDisplayNormalization(NFC) // matches JDK 1.7u40+ behavior
.setNameCanonicalNormalization(NFD, CASE_FOLD_ASCII) // NFD is default in HFS+
.setSupportedFeatures(LINKS, SYMBOLIC_LINKS, FILE_CHANNEL)
@@ -178,6 +180,7 @@ public final class Configuration {
private static final class WindowsHolder {
private static final Configuration WINDOWS =
Configuration.builder(PathType.windows())
+ .setDisplayName("Windows")
.setRoots("C:\\")
.setWorkingDirectory("C:\\work")
.setNameCanonicalNormalization(CASE_FOLD_ASCII)
@@ -241,6 +244,7 @@ public final class Configuration {
final ImmutableSet<String> roots;
final String workingDirectory;
final ImmutableSet<Feature> supportedFeatures;
+ private final String displayName;
/**
* Creates an immutable configuration object from the given builder.
@@ -266,6 +270,46 @@ public final class Configuration {
this.roots = builder.roots;
this.workingDirectory = builder.workingDirectory;
this.supportedFeatures = builder.supportedFeatures;
+ this.displayName = builder.displayName;
+ }
+
+ @Override
+ public String toString() {
+ if (displayName != null) {
+ return MoreObjects.toStringHelper(this).addValue(displayName).toString();
+ }
+ MoreObjects.ToStringHelper helper =
+ MoreObjects.toStringHelper(this)
+ .add("pathType", pathType)
+ .add("roots", roots)
+ .add("supportedFeatures", supportedFeatures)
+ .add("workingDirectory", workingDirectory);
+ if (!nameDisplayNormalization.isEmpty()) {
+ helper.add("nameDisplayNormalization", nameDisplayNormalization);
+ }
+ if (!nameCanonicalNormalization.isEmpty()) {
+ helper.add("nameCanonicalNormalization", nameCanonicalNormalization);
+ }
+ helper
+ .add("pathEqualityUsesCanonicalForm", pathEqualityUsesCanonicalForm)
+ .add("blockSize", blockSize)
+ .add("maxSize", maxSize);
+ if (maxCacheSize != Builder.DEFAULT_MAX_CACHE_SIZE) {
+ helper.add("maxCacheSize", maxCacheSize);
+ }
+ if (!attributeViews.isEmpty()) {
+ helper.add("attributeViews", attributeViews);
+ }
+ if (!attributeProviders.isEmpty()) {
+ helper.add("attributeProviders", attributeProviders);
+ }
+ if (!defaultAttributeValues.isEmpty()) {
+ helper.add("defaultAttributeValues", defaultAttributeValues);
+ }
+ if (watchServiceConfig != WatchServiceConfiguration.DEFAULT) {
+ helper.add("watchServiceConfig", watchServiceConfig);
+ }
+ return helper.toString();
}
/**
@@ -312,6 +356,7 @@ public final class Configuration {
private ImmutableSet<String> roots = ImmutableSet.of();
private String workingDirectory;
private ImmutableSet<Feature> supportedFeatures = ImmutableSet.of();
+ private String displayName;
private Builder(PathType pathType) {
this.pathType = checkNotNull(pathType);
@@ -338,6 +383,7 @@ public final class Configuration {
this.roots = configuration.roots;
this.workingDirectory = configuration.workingDirectory;
this.supportedFeatures = configuration.supportedFeatures;
+ // displayName intentionally not copied from the Configuration
}
/**
@@ -650,6 +696,11 @@ public final class Configuration {
return this;
}
+ private Builder setDisplayName(String displayName) {
+ this.displayName = checkNotNull(displayName);
+ return this;
+ }
+
/**
* Creates a new immutable configuration object from this builder.
*/
diff --git a/jimfs/src/main/java/com/google/common/jimfs/PathType.java b/jimfs/src/main/java/com/google/common/jimfs/PathType.java
index 47b1b16..50899db 100644
--- a/jimfs/src/main/java/com/google/common/jimfs/PathType.java
+++ b/jimfs/src/main/java/com/google/common/jimfs/PathType.java
@@ -168,6 +168,11 @@ public abstract class PathType {
*/
public abstract ParseResult parsePath(String path);
+ @Override
+ public String toString() {
+ return getClass().getSimpleName();
+ }
+
/**
* Returns the string form of the given path.
*/