diff options
author | diamondm <diamondm@google.com> | 2017-06-13 09:43:36 -0700 |
---|---|---|
committer | Ron Shapiro <ronshapiro@google.com> | 2017-06-14 16:21:33 -0400 |
commit | 4f8012675f60f0508fc6e422076a0a141db60213 (patch) | |
tree | ac8b87ebcf18494b55f12412b0ea9dafc9f03bc8 | |
parent | 8df6f021d2f7ad713f2546412db57eb3e87bae62 (diff) | |
download | jimfs-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.java | 57 | ||||
-rw-r--r-- | jimfs/src/main/java/com/google/common/jimfs/PathType.java | 5 |
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. */ |