Repository: archiva
Updated Branches:
  refs/heads/master 1b8926682 -> 9706f85fd


Adding maven repository implementation


Project: http://git-wip-us.apache.org/repos/asf/archiva/repo
Commit: http://git-wip-us.apache.org/repos/asf/archiva/commit/3976c3fb
Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/3976c3fb
Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/3976c3fb

Branch: refs/heads/master
Commit: 3976c3fb23ffc68e0b8e83934db68f8db96f9c0f
Parents: 1b89266
Author: Martin Stockhammer <[email protected]>
Authored: Tue Oct 3 19:27:15 2017 +0200
Committer: Martin Stockhammer <[email protected]>
Committed: Tue Oct 3 19:27:15 2017 +0200

----------------------------------------------------------------------
 .../repository/UnsupportedFeatureException.java |  3 +-
 .../features/ArtifactCleanupFeature.java        |  6 ++-
 .../features/IndexCreationFeature.java          |  6 ++-
 .../repository/features/RemoteIndexFeature.java |  2 +-
 .../repository/features/RepositoryFeature.java  |  2 +-
 .../features/StagingRepositoryFeature.java      |  6 ++-
 .../maven2/MavenManagedRepository.java          | 39 ++++++++++++++--
 .../maven2/MavenRemoteRepository.java           | 49 ++++++++++++++++----
 .../maven2/MavenRepositoryProvider.java         |  6 ++-
 9 files changed, 98 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/archiva/blob/3976c3fb/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/UnsupportedFeatureException.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/UnsupportedFeatureException.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/UnsupportedFeatureException.java
index 6f798c2..112f307 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/UnsupportedFeatureException.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/UnsupportedFeatureException.java
@@ -21,9 +21,10 @@ package org.apache.archiva.repository;
 
 /**
  * This exception is thrown if a given feature is not supported by the 
repository.
+ * This is a runtime exception.
  *
  */
-public class UnsupportedFeatureException extends Exception {
+public class UnsupportedFeatureException extends RuntimeException {
 
     public UnsupportedFeatureException() {
     }

http://git-wip-us.apache.org/repos/asf/archiva/blob/3976c3fb/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/ArtifactCleanupFeature.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/ArtifactCleanupFeature.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/ArtifactCleanupFeature.java
index 772733b..0243ff4 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/ArtifactCleanupFeature.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/ArtifactCleanupFeature.java
@@ -33,6 +33,10 @@ public class ArtifactCleanupFeature implements 
RepositoryFeature<ArtifactCleanup
     private Period retentionTime = Period.ofDays(100);
     private int retentionCount = 2;
 
+    public ArtifactCleanupFeature() {
+
+    }
+
     public ArtifactCleanupFeature(boolean deleteReleasedSnapshots, Period 
retentionTime, int retentionCount) {
         this.deleteReleasedSnapshots = deleteReleasedSnapshots;
         this.retentionTime = retentionTime;
@@ -40,7 +44,7 @@ public class ArtifactCleanupFeature implements 
RepositoryFeature<ArtifactCleanup
     }
 
     @Override
-    public ArtifactCleanupFeature getFeature() {
+    public ArtifactCleanupFeature get() {
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/3976c3fb/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java
index 43b0221..311e0d9 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/IndexCreationFeature.java
@@ -29,12 +29,16 @@ public class IndexCreationFeature implements 
RepositoryFeature<IndexCreationFeat
 
     private boolean skipPackedIndexCreation = false;
 
+    public IndexCreationFeature() {
+
+    }
+
     public IndexCreationFeature(boolean skipPackedIndexCreation) {
         this.skipPackedIndexCreation = skipPackedIndexCreation;
     }
 
     @Override
-    public IndexCreationFeature getFeature() {
+    public IndexCreationFeature get() {
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/3976c3fb/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/RemoteIndexFeature.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/RemoteIndexFeature.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/RemoteIndexFeature.java
index 5334cee..645d581 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/RemoteIndexFeature.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/RemoteIndexFeature.java
@@ -33,7 +33,7 @@ public class RemoteIndexFeature implements 
RepositoryFeature<RemoteIndexFeature>
 
 
     @Override
-    public RemoteIndexFeature getFeature() {
+    public RemoteIndexFeature get() {
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/3976c3fb/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/RepositoryFeature.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/RepositoryFeature.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/RepositoryFeature.java
index 14b5c74..a4df8a2 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/RepositoryFeature.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/RepositoryFeature.java
@@ -37,5 +37,5 @@ public interface RepositoryFeature<T extends 
RepositoryFeature<T>> {
         return this.getClass().equals(clazz);
     }
 
-    T getFeature();
+    T get();
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/3976c3fb/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/StagingRepositoryFeature.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/StagingRepositoryFeature.java
 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/StagingRepositoryFeature.java
index 70deadc..edd0719 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/StagingRepositoryFeature.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/features/StagingRepositoryFeature.java
@@ -31,13 +31,17 @@ public class StagingRepositoryFeature implements 
RepositoryFeature<StagingReposi
     private ManagedRepository stagingRepository = null;
     private boolean stageRepoNeeded = false;
 
+    public StagingRepositoryFeature() {
+
+    }
+
     public StagingRepositoryFeature(ManagedRepository stagingRepository, 
boolean stageRepoNeeded) {
         this.stagingRepository = stagingRepository;
         this.stageRepoNeeded = stageRepoNeeded;
     }
 
     @Override
-    public StagingRepositoryFeature getFeature() {
+    public StagingRepositoryFeature get() {
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/3976c3fb/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
index c2a316b..dc16d16 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
@@ -25,8 +25,10 @@ import org.apache.archiva.repository.ReleaseScheme;
 import org.apache.archiva.repository.RepositoryCapabilities;
 import org.apache.archiva.repository.RepositoryType;
 import org.apache.archiva.repository.StandardCapabilities;
+import org.apache.archiva.repository.UnsupportedFeatureException;
 import org.apache.archiva.repository.features.ArtifactCleanupFeature;
 import org.apache.archiva.repository.features.IndexCreationFeature;
+import org.apache.archiva.repository.features.RepositoryFeature;
 import org.apache.archiva.repository.features.StagingRepositoryFeature;
 
 import java.util.Locale;
@@ -39,6 +41,9 @@ public class MavenManagedRepository extends 
AbstractManagedRepository
     public static final String DEFAULT_LAYOUT = "default";
     public static final String LEGACY_LAYOUT = "legacy";
     private ManagedRepositoryContent content;
+    private ArtifactCleanupFeature artifactCleanupFeature = new 
ArtifactCleanupFeature( );
+    private IndexCreationFeature indexCreationFeature = new 
IndexCreationFeature(  );
+    private StagingRepositoryFeature stagingRepositoryFeature = new 
StagingRepositoryFeature(  );
 
     private static final RepositoryCapabilities CAPABILITIES = new 
StandardCapabilities(
         new ReleaseScheme[] { ReleaseScheme.RELEASE, ReleaseScheme.SNAPSHOT },
@@ -53,14 +58,14 @@ public class MavenManagedRepository extends 
AbstractManagedRepository
         false
     );
 
-    public MavenManagedRepository( RepositoryType type, String id, String name 
)
+    public MavenManagedRepository( String id, String name )
     {
-        super( type, id, name );
+        super( RepositoryType.MAVEN, id, name );
     }
 
-    public MavenManagedRepository( Locale primaryLocale, RepositoryType type, 
String id, String name )
+    public MavenManagedRepository( Locale primaryLocale, String id, String 
name )
     {
-        super( primaryLocale, type, id, name );
+        super( primaryLocale, RepositoryType.MAVEN, id, name );
     }
 
     protected void setContent(ManagedRepositoryContent content) {
@@ -78,4 +83,30 @@ public class MavenManagedRepository extends 
AbstractManagedRepository
     {
         return CAPABILITIES;
     }
+
+    @Override
+    public <T extends RepositoryFeature<T>> RepositoryFeature<T> getFeature( 
Class<T> clazz ) throws UnsupportedFeatureException
+    {
+        if (ArtifactCleanupFeature.class.equals( clazz ))
+        {
+            return (RepositoryFeature<T>) artifactCleanupFeature;
+        } else if (IndexCreationFeature.class.equals(clazz)) {
+            return (RepositoryFeature<T>) indexCreationFeature;
+        } else if (StagingRepositoryFeature.class.equals(clazz)) {
+            return (RepositoryFeature<T>) stagingRepositoryFeature;
+        } else {
+            throw new UnsupportedFeatureException(  );
+        }
+    }
+
+    @Override
+    public <T extends RepositoryFeature<T>> boolean supportsFeature( Class<T> 
clazz )
+    {
+        if (ArtifactCleanupFeature.class.equals(clazz) ||
+            IndexCreationFeature.class.equals(clazz) ||
+            StagingRepositoryFeature.class.equals(clazz)) {
+            return true;
+        }
+        return false;
+    }
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/3976c3fb/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
index 8323cd6..d35f1cc 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
@@ -1,22 +1,19 @@
 package org.apache.archiva.repository.maven2;
 
 import org.apache.archiva.repository.AbstractRemoteRepository;
-import org.apache.archiva.repository.AbstractRepository;
 import org.apache.archiva.repository.ReleaseScheme;
 import org.apache.archiva.repository.RemoteRepository;
-import org.apache.archiva.repository.RemoteRepositoryContent;
 import org.apache.archiva.repository.RepositoryCapabilities;
-import org.apache.archiva.repository.RepositoryCredentials;
 import org.apache.archiva.repository.RepositoryType;
 import org.apache.archiva.repository.StandardCapabilities;
+import org.apache.archiva.repository.UnsupportedFeatureException;
 import org.apache.archiva.repository.features.ArtifactCleanupFeature;
 import org.apache.archiva.repository.features.IndexCreationFeature;
 import org.apache.archiva.repository.features.RemoteIndexFeature;
+import org.apache.archiva.repository.features.RepositoryFeature;
 import org.apache.archiva.repository.features.StagingRepositoryFeature;
 
-import java.time.Duration;
 import java.util.Locale;
-import java.util.Map;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -43,6 +40,11 @@ import java.util.Map;
 public class MavenRemoteRepository extends AbstractRemoteRepository
     implements RemoteRepository
 {
+    private ArtifactCleanupFeature artifactCleanupFeature = new 
ArtifactCleanupFeature( );
+    private IndexCreationFeature indexCreationFeature = new 
IndexCreationFeature(  );
+    private StagingRepositoryFeature stagingRepositoryFeature = new 
StagingRepositoryFeature(  );
+    private RemoteIndexFeature remoteIndexFeature = new RemoteIndexFeature();
+
     private static final RepositoryCapabilities CAPABILITIES = new 
StandardCapabilities(
         new ReleaseScheme[] { ReleaseScheme.RELEASE, ReleaseScheme.SNAPSHOT },
         new String[] { MavenManagedRepository.DEFAULT_LAYOUT, 
MavenManagedRepository.LEGACY_LAYOUT},
@@ -56,14 +58,14 @@ public class MavenRemoteRepository extends 
AbstractRemoteRepository
         false
     );
 
-    public MavenRemoteRepository( RepositoryType type, String id, String name )
+    public MavenRemoteRepository( String id, String name )
     {
-        super( type, id, name );
+        super( RepositoryType.MAVEN, id, name );
     }
 
-    public MavenRemoteRepository( Locale primaryLocale, RepositoryType type, 
String id, String name )
+    public MavenRemoteRepository( Locale primaryLocale, String id, String name 
)
     {
-        super( primaryLocale, type, id, name );
+        super( primaryLocale, RepositoryType.MAVEN, id, name );
     }
 
     @Override
@@ -71,4 +73,33 @@ public class MavenRemoteRepository extends 
AbstractRemoteRepository
     {
         return CAPABILITIES;
     }
+
+    @Override
+    public <T extends RepositoryFeature<T>> RepositoryFeature<T> getFeature( 
Class<T> clazz ) throws UnsupportedFeatureException
+    {
+        if (ArtifactCleanupFeature.class.equals(clazz)) {
+            return (RepositoryFeature<T>) artifactCleanupFeature;
+        } else if (IndexCreationFeature.class.equals(clazz)) {
+            return (RepositoryFeature<T>) indexCreationFeature;
+        } else if (StagingRepositoryFeature.class.equals(clazz)) {
+            return (RepositoryFeature<T>) stagingRepositoryFeature;
+        } else if (RemoteIndexFeature.class.equals( clazz )) {
+            return (RepositoryFeature<T>) remoteIndexFeature;
+        } else {
+            throw new UnsupportedFeatureException(  );
+        }
+    }
+
+    @Override
+    public <T extends RepositoryFeature<T>> boolean supportsFeature( Class<T> 
clazz )
+    {
+        if (ArtifactCleanupFeature.class.equals(clazz) ||
+            IndexCreationFeature.class.equals(clazz) ||
+            StagingRepositoryFeature.class.equals(clazz) ||
+            RemoteIndexFeature.class.equals(clazz)) {
+            return true;
+        } else {
+            return false;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/3976c3fb/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
index 2cda873..f2fc67e 100644
--- 
a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
+++ 
b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
@@ -25,6 +25,7 @@ import org.apache.archiva.repository.ManagedRepository;
 import org.apache.archiva.repository.RemoteRepository;
 import org.apache.archiva.repository.RepositoryProvider;
 import org.apache.archiva.repository.RepositoryType;
+import org.apache.archiva.repository.features.StagingRepositoryFeature;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -46,9 +47,10 @@ public class MavenRepositoryProvider implements 
RepositoryProvider
     }
 
     @Override
-    public ManagedRepository createManagedInstance( 
ManagedRepositoryConfiguration configuration )
+    public ManagedRepository createManagedInstance( 
ManagedRepositoryConfiguration cfg )
     {
-        MavenManagedRepository repo = new MavenManagedRepository(  null, null 
,null );
+        MavenManagedRepository repo = new MavenManagedRepository(cfg.getId() 
,cfg.getName());
+        StagingRepositoryFeature feature = repo.getFeature( 
StagingRepositoryFeature.class ).get();
         return null;
     }
 

Reply via email to