You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2020/04/11 20:25:24 UTC

[maven-indexer] 01/05: [MINDEXER-124] Add ResourceHandler implementations

This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch MINDEXER-124
in repository https://gitbox.apache.org/repos/asf/maven-indexer.git

commit e2280121426eaddc34a99d67fb687e6acc9ab2e8
Author: sixcorners <si...@gmail.com>
AuthorDate: Sun Feb 2 09:38:15 2020 -0600

    [MINDEXER-124] Add ResourceHandler implementations
---
 .../index/reader/resource/BufferedResource.java    | 23 +++++++++++++++
 .../reader/resource/BufferedResourceHandler.java   | 22 ++++++++++++++
 .../reader/resource/BufferedWritableResource.java  | 29 ++++++++++++++++++
 .../resource/BufferedWritableResourceHandler.java  | 22 ++++++++++++++
 .../reader/resource/PathWritableResource.java      | 34 ++++++++++++++++++++++
 .../resource/PathWritableResourceHandler.java      | 21 +++++++++++++
 .../index/reader/resource/UriResourceHandler.java  | 21 +++++++++++++
 .../maven/index/reader/resource/UrlResource.java   | 24 +++++++++++++++
 8 files changed, 196 insertions(+)

diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedResource.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedResource.java
new file mode 100644
index 0000000..c7c646a
--- /dev/null
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedResource.java
@@ -0,0 +1,23 @@
+package org.apache.maven.index.reader.resource;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import org.apache.maven.index.reader.ResourceHandler.Resource;
+
+public class BufferedResource implements Resource {
+  private final Resource resource;
+
+  public BufferedResource(Resource resource) {
+    this.resource = resource;
+  }
+
+  @Override
+  public InputStream read() throws IOException {
+    InputStream in = resource.read();
+    if (in == null) {
+      return null;
+    }
+    return new BufferedInputStream(in);
+  }
+}
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedResourceHandler.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedResourceHandler.java
new file mode 100644
index 0000000..4ffc65f
--- /dev/null
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedResourceHandler.java
@@ -0,0 +1,22 @@
+package org.apache.maven.index.reader.resource;
+
+import java.io.IOException;
+import org.apache.maven.index.reader.ResourceHandler;
+
+public class BufferedResourceHandler implements ResourceHandler {
+  private final ResourceHandler resourceHandler;
+
+  public BufferedResourceHandler(ResourceHandler resourceHandler) {
+    this.resourceHandler = resourceHandler;
+  }
+
+  @Override
+  public Resource locate(String name) throws IOException {
+    return new BufferedResource(resourceHandler.locate(name));
+  }
+
+  @Override
+  public void close() throws IOException {
+    resourceHandler.close();
+  }
+}
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedWritableResource.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedWritableResource.java
new file mode 100644
index 0000000..176ab4f
--- /dev/null
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedWritableResource.java
@@ -0,0 +1,29 @@
+package org.apache.maven.index.reader.resource;
+
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import org.apache.maven.index.reader.WritableResourceHandler.WritableResource;
+
+public class BufferedWritableResource extends BufferedResource implements WritableResource {
+  private final WritableResource resource;
+
+  public BufferedWritableResource(WritableResource resource) {
+    super(resource);
+    this.resource = resource;
+  }
+
+  @Override
+  public OutputStream write() throws IOException {
+    OutputStream out = resource.write();
+    if (out == null) {
+      return null;
+    }
+    return new BufferedOutputStream(out);
+  }
+
+  @Override
+  public void close() throws IOException {
+    resource.close();
+  }
+}
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedWritableResourceHandler.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedWritableResourceHandler.java
new file mode 100644
index 0000000..f05faa3
--- /dev/null
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/BufferedWritableResourceHandler.java
@@ -0,0 +1,22 @@
+package org.apache.maven.index.reader.resource;
+
+import java.io.IOException;
+import org.apache.maven.index.reader.WritableResourceHandler;
+
+public class BufferedWritableResourceHandler implements WritableResourceHandler {
+  private final WritableResourceHandler writableResourceHandler;
+
+  public BufferedWritableResourceHandler(WritableResourceHandler writableResourceHandler) {
+    this.writableResourceHandler = writableResourceHandler;
+  }
+
+  @Override
+  public WritableResource locate(String name) throws IOException {
+    return new BufferedWritableResource(writableResourceHandler.locate(name));
+  }
+
+  @Override
+  public void close() throws IOException {
+    writableResourceHandler.close();
+  }
+}
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/PathWritableResource.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/PathWritableResource.java
new file mode 100644
index 0000000..58ed981
--- /dev/null
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/PathWritableResource.java
@@ -0,0 +1,34 @@
+package org.apache.maven.index.reader.resource;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
+import java.nio.file.Path;
+import org.apache.maven.index.reader.WritableResourceHandler.WritableResource;
+
+public class PathWritableResource implements WritableResource {
+  private final Path path;
+
+  public PathWritableResource(Path path) {
+    this.path = path;
+  }
+
+  @Override
+  public OutputStream write() throws IOException {
+    return Files.newOutputStream(path);
+  }
+
+  @Override
+  public InputStream read() throws IOException {
+    try {
+      return Files.newInputStream(path);
+    } catch (NoSuchFileException e) {
+      return null;
+    }
+  }
+
+  @Override
+  public void close() throws IOException {}
+}
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/PathWritableResourceHandler.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/PathWritableResourceHandler.java
new file mode 100644
index 0000000..d47b78a
--- /dev/null
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/PathWritableResourceHandler.java
@@ -0,0 +1,21 @@
+package org.apache.maven.index.reader.resource;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import org.apache.maven.index.reader.WritableResourceHandler;
+
+public class PathWritableResourceHandler implements WritableResourceHandler {
+  private final Path path;
+
+  public PathWritableResourceHandler(Path path) {
+    this.path = path;
+  }
+
+  @Override
+  public WritableResource locate(String name) {
+    return new PathWritableResource(path.resolve(name));
+  }
+
+  @Override
+  public void close() throws IOException {}
+}
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/UriResourceHandler.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/UriResourceHandler.java
new file mode 100644
index 0000000..6c50c66
--- /dev/null
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/UriResourceHandler.java
@@ -0,0 +1,21 @@
+package org.apache.maven.index.reader.resource;
+
+import java.io.IOException;
+import java.net.URI;
+import org.apache.maven.index.reader.ResourceHandler;
+
+public class UriResourceHandler implements ResourceHandler {
+  private final URI uri;
+
+  public UriResourceHandler(URI uri) {
+    this.uri = uri;
+  }
+
+  @Override
+  public Resource locate(String name) throws IOException {
+    return new UrlResource(uri.resolve(name).toURL());
+  }
+
+  @Override
+  public void close() throws IOException {}
+}
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/UrlResource.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/UrlResource.java
new file mode 100644
index 0000000..f302578
--- /dev/null
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/resource/UrlResource.java
@@ -0,0 +1,24 @@
+package org.apache.maven.index.reader.resource;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import org.apache.maven.index.reader.ResourceHandler.Resource;
+
+public class UrlResource implements Resource {
+  private final URL url;
+
+  public UrlResource(URL url) {
+    this.url = url;
+  }
+
+  @Override
+  public InputStream read() throws IOException {
+    try {
+      return url.openStream();
+    } catch (FileNotFoundException e) {
+      return null;
+    }
+  }
+}