You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hama.apache.org by ch...@apache.org on 2019/03/10 17:08:13 UTC
[hama] branch componentization updated: Add default local
FileSystem type class.
This is an automated email from the ASF dual-hosted git repository.
chl501 pushed a commit to branch componentization
in repository https://gitbox.apache.org/repos/asf/hama.git
The following commit(s) were added to refs/heads/componentization by this push:
new 67ecc55 Add default local FileSystem type class.
67ecc55 is described below
commit 67ecc55c807775d65c61fd9a441081a50bbf768f
Author: Chiahung Lin <ch...@apache.org>
AuthorDate: Sun Mar 10 18:07:21 2019 +0100
Add default local FileSystem type class.
---
.../main/scala/org/apache/hama/fs/FileSystem.scala | 63 ++++++++++++++++++++++
1 file changed, 63 insertions(+)
diff --git a/commons.v2/src/main/scala/org/apache/hama/fs/FileSystem.scala b/commons.v2/src/main/scala/org/apache/hama/fs/FileSystem.scala
new file mode 100644
index 0000000..cae2503
--- /dev/null
+++ b/commons.v2/src/main/scala/org/apache/hama/fs/FileSystem.scala
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.hama.fs
+
+import java.io.IOException
+import java.nio.file.Path
+import java.nio.file.Paths
+import scala.util.Either
+import scala.util.Try
+
+trait FileSystem {
+
+ def close: Either[IOException, Unit]
+
+ def path(paths: String*): Either[Throwable, Path]
+
+ def create(path: Path): Either[Throwable, Path]
+
+ def remove(path: Path): Either[Throwable, Path]
+
+ def exist(path: Path): Boolean
+
+}
+
+object FileSystem {
+
+ def apply(implicit fs: FileSystem): FileSystem = fs
+
+ def local() = apply(localFS)
+
+ implicit val localFS = new FileSystem {
+
+ override def close: Either[IOException, Unit] = Right()
+
+ override def path(paths: String*): Either[Throwable, Path] =
+ Try(Paths.get(paths(0), paths.tail:_*)).toEither
+
+ override def create(path: Path): Either[Throwable, Path] =
+ Try(path.toFile.createNewFile).map(_ => path).toEither
+
+ override def remove(path: Path): Either[Throwable, Path] =
+ Try(path.toFile.delete).map(_ => path).toEither
+
+ override def exist(path: Path): Boolean = path.toFile.exists
+
+ }
+
+}