aboutsummaryrefslogtreecommitdiff
path: root/jimfs/src/main/java/com/google/common/jimfs/StandardAttributeProviders.java
diff options
context:
space:
mode:
authorYuexi Ma <yuexima@google.com>2020-03-04 18:43:18 -0800
committerYuexi Ma <yuexima@google.com>2020-03-05 03:04:14 +0000
commitcef92d673c81daab4b0dad931591947c86e0dc8a (patch)
treef8cbc802a806455c5fdfeab7f696c63641b9f9f5 /jimfs/src/main/java/com/google/common/jimfs/StandardAttributeProviders.java
parent68591711a9034281d5fe11fc7a30e535bbce125c (diff)
parent93a6c6782a9fdf1365face2461876b8644b2a404 (diff)
downloadjimfs-cef92d673c81daab4b0dad931591947c86e0dc8a.tar.gz
Test: n/a Bug: 150784654 Change-Id: I6fb223f1bd657a6a3d0be1492f63a7774e21943e
Diffstat (limited to 'jimfs/src/main/java/com/google/common/jimfs/StandardAttributeProviders.java')
-rw-r--r--jimfs/src/main/java/com/google/common/jimfs/StandardAttributeProviders.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/jimfs/src/main/java/com/google/common/jimfs/StandardAttributeProviders.java b/jimfs/src/main/java/com/google/common/jimfs/StandardAttributeProviders.java
new file mode 100644
index 0000000..973c6bb
--- /dev/null
+++ b/jimfs/src/main/java/com/google/common/jimfs/StandardAttributeProviders.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.common.jimfs;
+
+import com.google.common.collect.ImmutableMap;
+import org.checkerframework.checker.nullness.compatqual.NullableDecl;
+
+/**
+ * Static registry of {@link AttributeProvider} implementations for the standard set of file
+ * attribute views Jimfs supports.
+ *
+ * @author Colin Decker
+ */
+final class StandardAttributeProviders {
+
+ private StandardAttributeProviders() {}
+
+ private static final ImmutableMap<String, AttributeProvider> PROVIDERS =
+ new ImmutableMap.Builder<String, AttributeProvider>()
+ .put("basic", new BasicAttributeProvider())
+ .put("owner", new OwnerAttributeProvider())
+ .put("posix", new PosixAttributeProvider())
+ .put("dos", new DosAttributeProvider())
+ .put("acl", new AclAttributeProvider())
+ .put("user", new UserDefinedAttributeProvider())
+ .build();
+
+ /**
+ * Returns the attribute provider for the given view, or {@code null} if the given view is not one
+ * of the attribute views this supports.
+ */
+ @NullableDecl
+ public static AttributeProvider get(String view) {
+ AttributeProvider provider = PROVIDERS.get(view);
+
+ if (provider == null && view.equals("unix")) {
+ // create a new UnixAttributeProvider per file system, as it does some caching that should be
+ // cleaned up when the file system is garbage collected
+ return new UnixAttributeProvider();
+ }
+
+ return provider;
+ }
+}