]> source.dussan.org Git - archiva.git/commitdiff
Adding packingIndexDir and event
authorMartin Stockhammer <martin.stockhammer@ars.de>
Thu, 29 Mar 2018 21:46:16 +0000 (23:46 +0200)
committerMartin Stockhammer <martin.stockhammer@ars.de>
Thu, 29 Mar 2018 21:46:51 +0000 (23:46 +0200)
archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/features/IndexCreationEvent.java
archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java

index 4c9dc8eae6b75bab2e2dc6c554fc167b2521987b..49a3d444ac1af7c712cf239e7991fdd63d25a7a6 100644 (file)
@@ -27,10 +27,22 @@ import java.net.URI;
 public class IndexCreationEvent extends RepositoryEvent<URI> {
 
     public enum Index implements EventType {
-        URI_CHANGE
+        INDEX_URI_CHANGE, PACKED_INDEX_URI_CHANGE
     }
 
     IndexCreationEvent(Repository repo, URI oldValue, URI value) {
-        super(Index.URI_CHANGE, repo, oldValue, value);
+        super(Index.INDEX_URI_CHANGE, repo, oldValue, value);
+    }
+
+    IndexCreationEvent(Index type, Repository repo, URI oldValue, URI value) {
+        super(type, repo, oldValue, value);
+    }
+
+    public static final IndexCreationEvent indexUriChange(Repository repo, URI oldValue, URI newValue) {
+        return new IndexCreationEvent(Index.INDEX_URI_CHANGE, repo, oldValue, newValue);
+    }
+
+    public static final IndexCreationEvent packedIndexUriChange(Repository repo, URI oldValue, URI newValue) {
+        return new IndexCreationEvent(Index.PACKED_INDEX_URI_CHANGE, repo, oldValue, newValue);
     }
 }
index 0aa44a20bbf425f88bba43b6a01d97b35aa970bb..6289cc651d750f7b311aef379f6a2c276680916c 100644 (file)
@@ -38,31 +38,42 @@ import java.util.List;
  */
 public class IndexCreationFeature extends AbstractFeature implements RepositoryFeature<IndexCreationFeature>{
 
+    public static final String DEFAULT_INDEX_PATH = ".indexer";
+    public static final String DEFAULT_PACKED_INDEX_PATH = ".index";
 
     private boolean skipPackedIndexCreation = false;
 
     private URI indexPath;
 
+    private URI packedIndexPath;
+
     private Path localIndexPath;
 
+    private Path localPackedIndexPath;
+
     private Repository repo;
 
     public IndexCreationFeature(Repository repoId, RepositoryEventListener listener) {
         super(listener);
         this.repo = repoId;
-        try
-        {
-            setIndexPath(new URI(".indexer"));
-        }
-        catch ( URISyntaxException e )
-        {
-            // This may not happen.
-            e.printStackTrace( );
+        try {
+            this.indexPath = new URI(DEFAULT_INDEX_PATH);
+            this.packedIndexPath = new URI(DEFAULT_PACKED_INDEX_PATH);
+        } catch (URISyntaxException e) {
+            // Does not happen
+            e.printStackTrace();
         }
     }
 
     public IndexCreationFeature(boolean skipPackedIndexCreation) {
         this.skipPackedIndexCreation = skipPackedIndexCreation;
+        try {
+            this.indexPath = new URI(DEFAULT_INDEX_PATH);
+            this.packedIndexPath = new URI(DEFAULT_PACKED_INDEX_PATH);
+        } catch (URISyntaxException e) {
+            // Does not happen
+            e.printStackTrace();
+        }
     }
 
     @Override
@@ -104,7 +115,7 @@ public class IndexCreationFeature extends AbstractFeature implements RepositoryF
     {
         URI oldVal = this.indexPath;
         this.indexPath = indexPath;
-        raiseEvent(new IndexCreationEvent(repo, oldVal, this.indexPath));
+        raiseEvent(IndexCreationEvent.indexUriChange(repo, oldVal, this.indexPath));
 
     }
 
@@ -113,11 +124,67 @@ public class IndexCreationFeature extends AbstractFeature implements RepositoryF
         return this.indexPath!=null && !StringUtils.isEmpty( this.indexPath.getPath() );
     }
 
+    /**
+     * Returns the path where the index is stored physically.
+     *
+     * @return
+     */
     public Path getLocalIndexPath() {
         return localIndexPath;
     }
 
+    /**
+     * Sets the path where the index is stored physically. This method should only be used by the
+     * MavenIndexProvider implementations.
+     *
+     * @param localIndexPath
+     */
     public void setLocalIndexPath(Path localIndexPath) {
         this.localIndexPath = localIndexPath;
     }
+
+
+    /**
+     * Returns the path of the packed index.
+     * @return
+     */
+    public URI getPackedIndexPath() {
+        return packedIndexPath;
+    }
+
+    /**
+     * Sets the path (relative or absolute) of the packed index.
+     * @param packedIndexPath
+     */
+    public void setPackedIndexPath(URI packedIndexPath) {
+        URI oldVal = this.packedIndexPath;
+        this.packedIndexPath = packedIndexPath;
+        raiseEvent(IndexCreationEvent.packedIndexUriChange(repo, oldVal, this.packedIndexPath));
+    }
+
+    /**
+     * Returns the directory where the packed index is stored.
+     * @return
+     */
+    public Path getLocalPackedIndexPath() {
+        return localPackedIndexPath;
+    }
+
+    /**
+     * Sets the path where the packed index is stored physically. This method should only be used by the
+     * MavenIndexProvider implementations.
+     *
+     * @param localPackedIndexPath
+     */
+    public void setLocalPackedIndexPath(Path localPackedIndexPath) {
+        this.localPackedIndexPath = localPackedIndexPath;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("IndexCreationFeature:{").append("skipPackedIndexCreation=").append(skipPackedIndexCreation)
+                .append(",indexPath=").append(indexPath).append(",packedIndexPath=").append(packedIndexPath).append("}");
+        return sb.toString();
+    }
 }