diff options
Diffstat (limited to 'src/shared/java/com/amadornes/artifactural/base/cache')
| -rw-r--r-- | src/shared/java/com/amadornes/artifactural/base/cache/ArtifactCacheBase.java | 9 | ||||
| -rw-r--r-- | src/shared/java/com/amadornes/artifactural/base/cache/LocatedArtifactCache.java | 43 |
2 files changed, 35 insertions, 17 deletions
diff --git a/src/shared/java/com/amadornes/artifactural/base/cache/ArtifactCacheBase.java b/src/shared/java/com/amadornes/artifactural/base/cache/ArtifactCacheBase.java index 93ca358..37c9d97 100644 --- a/src/shared/java/com/amadornes/artifactural/base/cache/ArtifactCacheBase.java +++ b/src/shared/java/com/amadornes/artifactural/base/cache/ArtifactCacheBase.java @@ -74,8 +74,8 @@ public abstract class ArtifactCacheBase implements ArtifactCache { } @Override - public Artifact.Cached cache(ArtifactCache cache, String specifier) { - return artifact.cache(cache, specifier); + public Artifact.Cached cache(ArtifactCache cache) { + return artifact.cache(cache); } @Override @@ -100,7 +100,10 @@ public abstract class ArtifactCacheBase implements ArtifactCache { public File getFileLocation() throws MissingArtifactException { return file; } - + @Override + public String toString() { + return "wrapped(" + artifact + ", " + file + ")"; + } }; } diff --git a/src/shared/java/com/amadornes/artifactural/base/cache/LocatedArtifactCache.java b/src/shared/java/com/amadornes/artifactural/base/cache/LocatedArtifactCache.java index 198f240..71fbc9d 100644 --- a/src/shared/java/com/amadornes/artifactural/base/cache/LocatedArtifactCache.java +++ b/src/shared/java/com/amadornes/artifactural/base/cache/LocatedArtifactCache.java @@ -2,11 +2,17 @@ package com.amadornes.artifactural.base.cache; import com.amadornes.artifactural.api.artifact.Artifact; import com.amadornes.artifactural.api.artifact.ArtifactIdentifier; +import com.amadornes.artifactural.base.util.PatternReplace; import java.io.File; +import java.util.AbstractMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class LocatedArtifactCache extends ArtifactCacheBase { - + private static final String PATTERN = "[group]/[name](/[meta_hash])/[version]/[name]-[version](-[classifier])(-[specifier]).[extension]"; private final File path; public LocatedArtifactCache(File path) { @@ -14,22 +20,31 @@ public class LocatedArtifactCache extends ArtifactCacheBase { } @Override - public Artifact.Cached store(Artifact artifact, String specifier) { + public Artifact.Cached store(Artifact artifact) { + return doStore(getPath(artifact), artifact); + } + + public File getPath(Artifact artifact) { ArtifactIdentifier identifier = artifact.getIdentifier(); - File cachePath = new File(path.getAbsolutePath() - .replace("${GROUP}", identifier.getGroup()) - .replace("${NAME}", identifier.getName()) - .replace("${VERSION}", identifier.getVersion()) - .replace("${CLASSIFIER}", identifier.getClassifier()) - .replace("${EXTENSION}", identifier.getExtension()) - .replace("${SPECIFIER}", specifier) - .replace("${META_HASH}", artifact.getMetadata().getHash()) - ); - return doStore(cachePath, artifact); + Map<String, String> names = Stream.of( + entry("group", identifier.getGroup()), + entry("name", identifier.getName()), + entry("version", identifier.getVersion()), + entry("classifier", identifier.getClassifier()), + entry("extension", identifier.getExtension()), + //entry("specifier", specifier), /? + entry("meta_hash", artifact.getMetadata().getHash()) + ).collect(Collectors.toMap(Entry::getKey, Entry::getValue)); + return new File(path, PatternReplace.replace(PATTERN, names)); } - public static File expand(File path) { - return new File(path, "${GROUP}/${NAME}/${META_HASH}/${NAME}-${VERSION}-${CLASSIFIER}-${SPECIFIER}.${EXTENSION}"); + private static <K,V> Entry<K,V> entry(K key, V value) { + return new AbstractMap.SimpleEntry<>(key, value); + } + + @Override + public String toString() { + return "LocatedArtifactCache(" + path + ")"; } } |
