aboutsummaryrefslogtreecommitdiffstats
path: root/archiva-modules/archiva-base/archiva-repository-api
diff options
context:
space:
mode:
authorMartin Stockhammer <martin.stockhammer@ars.de>2018-03-24 17:41:50 +0100
committerMartin Stockhammer <martin.stockhammer@ars.de>2018-03-24 17:44:13 +0100
commitc544376afbec84689eae8ca5cc1a8f6a0ddb768d (patch)
treedfa67aabe758715dad9684e1909f6c6f649ee2b0 /archiva-modules/archiva-base/archiva-repository-api
parente2eb9fe940feaa1606489c894182f2923bd54458 (diff)
downloadarchiva-c544376afbec84689eae8ca5cc1a8f6a0ddb768d.tar.gz
archiva-c544376afbec84689eae8ca5cc1a8f6a0ddb768d.zip
Switching repository admin and dependent classes to RepositoryRegistry
RepositoryRegistry is used for indexing context now. There is still more work to do to move the maven dependent parts into its own projects and update the dependencies.
Diffstat (limited to 'archiva-modules/archiva-base/archiva-repository-api')
-rw-r--r--archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/indexer/ArchivaIndexManager.java20
-rw-r--r--archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/indexer/GenericIndexManager.java12
-rw-r--r--archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/EditableRepository.java8
-rw-r--r--archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java9
-rw-r--r--archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEvent.java69
-rw-r--r--archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEventHandler.java32
-rw-r--r--archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEventListener.java28
-rw-r--r--archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryProvider.java2
8 files changed, 178 insertions, 2 deletions
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/indexer/ArchivaIndexManager.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/indexer/ArchivaIndexManager.java
index fb34eb2ff..63a8a9297 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/indexer/ArchivaIndexManager.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/indexer/ArchivaIndexManager.java
@@ -20,6 +20,7 @@ package org.apache.archiva.indexer;
*/
import org.apache.archiva.repository.Repository;
+import org.apache.archiva.repository.RepositoryEventListener;
import org.apache.archiva.repository.RepositoryType;
import java.net.URI;
@@ -75,4 +76,23 @@ public interface ArchivaIndexManager {
* @return the index context
*/
ArchivaIndexingContext createContext(Repository repository) throws IndexCreationFailedException;
+
+ /**
+ * Reinitializes the index. E.g. remove the files and create a new empty index.
+ *
+ * @param context
+ * @return the new created index
+ */
+ ArchivaIndexingContext reset(ArchivaIndexingContext context) throws IndexUpdateFailedException;
+
+ /**
+ * Moves the context to a new directory. It's up to the implementation, if a new context is created
+ * or the context is moved only.
+ *
+ * @param context The current context
+ * @param repo The repository
+ * @return The new context
+ * @throws IndexCreationFailedException
+ */
+ ArchivaIndexingContext move(ArchivaIndexingContext context, Repository repo) throws IndexCreationFailedException;
}
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/indexer/GenericIndexManager.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/indexer/GenericIndexManager.java
index d0f803416..8d8072e32 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/indexer/GenericIndexManager.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/indexer/GenericIndexManager.java
@@ -20,6 +20,7 @@ package org.apache.archiva.indexer;
*/
import org.apache.archiva.repository.Repository;
+import org.apache.archiva.repository.RepositoryEvent;
import org.apache.archiva.repository.RepositoryType;
import org.springframework.stereotype.Service;
@@ -63,4 +64,15 @@ public class GenericIndexManager implements ArchivaIndexManager {
public ArchivaIndexingContext createContext(Repository repository) {
return null;
}
+
+ @Override
+ public ArchivaIndexingContext reset(ArchivaIndexingContext context) throws IndexUpdateFailedException {
+ return null;
+ }
+
+ @Override
+ public ArchivaIndexingContext move(ArchivaIndexingContext context, Repository repo) throws IndexCreationFailedException {
+ return null;
+ }
+
}
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/EditableRepository.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/EditableRepository.java
index b27549211..7b7dd8f8a 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/EditableRepository.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/EditableRepository.java
@@ -19,6 +19,8 @@ package org.apache.archiva.repository;
* under the License.
*/
+import org.apache.archiva.indexer.ArchivaIndexingContext;
+
import java.net.URI;
import java.util.Locale;
@@ -120,5 +122,11 @@ public interface EditableRepository extends Repository
*/
void setLayout(String layout);
+ /**
+ * Sets the indexing context reference.
+ * @param context
+ */
+ void setIndexingContext(ArchivaIndexingContext context);
+
}
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
index fae5745dd..78a330a96 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/Repository.java
@@ -22,6 +22,7 @@ package org.apache.archiva.repository;
import org.apache.archiva.indexer.ArchivaIndexingContext;
import org.apache.archiva.repository.features.RepositoryFeature;
+import java.io.IOException;
import java.net.URI;
import java.nio.file.Path;
import java.util.List;
@@ -34,7 +35,7 @@ import java.util.Set;
*
* Created by Martin Stockhammer on 21.09.17.
*/
-public interface Repository {
+public interface Repository extends RepositoryEventHandler {
/**
* Return the identifier of the repository. Repository identifier should be unique at least
@@ -175,4 +176,10 @@ public interface Repository {
* @throws UnsupportedOperationException
*/
ArchivaIndexingContext getIndexingContext();
+
+ /**
+ * Closes all resources that are opened by this repository.
+ */
+ void close();
+
}
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEvent.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEvent.java
new file mode 100644
index 000000000..d8bdf95fe
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEvent.java
@@ -0,0 +1,69 @@
+package org.apache.archiva.repository;
+
+/*
+ * 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.
+ */
+
+import java.time.LocalDateTime;
+
+/**
+ * Repository event. Repository events are used for providing information about repository changes.
+ *
+ * @param <T>
+ */
+public class RepositoryEvent<T> {
+
+ final EventType type;
+ final String repo;
+ final T value;
+ final T oldValue;
+ final LocalDateTime instant;
+
+ public RepositoryEvent(EventType type, String repo, T oldValue, T value) {
+ this.type = type;
+ this.repo = repo;
+ this.value = value;
+ this.oldValue = oldValue;
+ this.instant = LocalDateTime.now();
+ }
+
+ public interface EventType {
+ String name();
+ }
+
+
+ EventType getType() {
+ return type;
+ };
+
+ String getRepositoryId() {
+ return repo;
+ };
+
+ T getValue() {
+ return value;
+ }
+
+ T getOldValue() {
+ return oldValue;
+ }
+
+ public LocalDateTime getInstant() {
+ return instant;
+ }
+}
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEventHandler.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEventHandler.java
new file mode 100644
index 000000000..74326270c
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEventHandler.java
@@ -0,0 +1,32 @@
+package org.apache.archiva.repository;
+
+/*
+ * 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.
+ */
+
+/**
+ * Implementations of this interface are able to handle repository event listeners
+ */
+public interface RepositoryEventHandler {
+
+ void addListener(RepositoryEventListener listener);
+
+ void removeListener(RepositoryEventListener listener);
+
+ void clearListeners();
+}
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEventListener.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEventListener.java
new file mode 100644
index 000000000..0234f34b4
--- /dev/null
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryEventListener.java
@@ -0,0 +1,28 @@
+package org.apache.archiva.repository;
+
+/*
+ * 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.
+ */
+
+/**
+ * Listener that accepts repository events.
+ */
+public interface RepositoryEventListener {
+
+ <T> void raise(RepositoryEvent<T> event);
+}
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryProvider.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryProvider.java
index a501514da..4492b01cb 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryProvider.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryProvider.java
@@ -37,7 +37,7 @@ import java.util.Set;
*
*
*/
-public interface RepositoryProvider
+public interface RepositoryProvider extends RepositoryEventListener
{
/**