]> source.dussan.org Git - archiva.git/blob
7f31b04506d493fb8375e433301edf2130c0d984
[archiva.git] /
1 package org.apache.archiva.indexer;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.archiva.repository.Repository;
23 import org.apache.archiva.repository.RepositoryType;
24
25 import java.io.IOException;
26 import java.net.URI;
27 import java.time.LocalDateTime;
28 import java.time.ZonedDateTime;
29 import java.util.Set;
30
31 /**
32  * This represents a indexing context that is used to manage the index of a certain repository.
33  *
34  */
35 public interface ArchivaIndexingContext {
36
37     /**
38      * The identifier of the context
39      * @return
40      */
41     String getId();
42
43     /**
44      * Returns the repository this index context is associated to.
45      * @return
46      */
47     Repository getRepository();
48
49     /**
50      * The path where the index is stored.
51      * @return
52      */
53     URI getPath();
54
55     /**
56      * Returns true, if the index has no entries or is not initialized.
57      * @return
58      */
59     boolean isEmpty() throws IOException;
60
61     /**
62      * Writes the last changes to the index.
63      * @throws IOException
64      */
65     void commit() throws IOException;
66
67     /**
68      * Throws away the last changes.
69      * @throws IOException
70      */
71     void rollback() throws IOException;
72
73     /**
74      * Optimizes the index
75      * @throws IOException
76      */
77     void optimize() throws IOException;
78
79     /**
80      * Closes any resources, this context has open.
81      * @param deleteFiles True, if the index files should be deleted.
82      * @throws IOException
83      */
84     void close(boolean deleteFiles) throws IOException;
85
86     /**
87      * Removes all entries from the index. After this method finished,
88      * isEmpty() should return true.
89      * @throws IOException
90      */
91     void purge() throws IOException;
92
93     /**
94      * Returns true, if this index implementation has support for the given repository specific
95      * implementation class.
96      * @param clazz
97      * @return
98      */
99     boolean supports(Class<?> clazz);
100
101     /**
102      * Returns the repository specific implementation of the index. E.g. the maven index class.
103      * @param clazz the specific class
104      * @return the instance of the given class representing this index
105      * @throws UnsupportedOperationException if the implementation is not supported
106      */
107     <T> T getBaseContext(Class<T> clazz) throws UnsupportedBaseContextException;
108
109
110
111     /**
112      * Returns the list of groups that are assigned to this index
113      * @return
114      */
115     Set<String> getGroups() throws IOException;
116
117     /**
118      * Updates the timestamp of the index.
119      * @param save
120      * @throws IOException
121      */
122     void updateTimestamp(boolean save) throws IOException;
123
124     /**
125      * Updates the timestamp with the given time.
126      * @param save
127      * @param time
128      * @throws IOException
129      */
130     void updateTimestamp(boolean save, ZonedDateTime time) throws IOException;
131 }