]> source.dussan.org Git - archiva.git/blob
9d4ad08ae307dd29e9639d8630bfcfe3fb1add27
[archiva.git] /
1 package org.apache.archiva.repository.maven.mock;
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  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  */
20
21 import org.apache.archiva.common.filelock.DefaultFileLockManager;
22 import org.apache.archiva.indexer.ArchivaIndexingContext;
23 import org.apache.archiva.repository.Repository;
24 import org.apache.archiva.repository.storage.fs.FilesystemStorage;
25 import org.apache.archiva.repository.storage.StorageAsset;
26 import org.apache.maven.index.context.IndexingContext;
27
28 import java.io.IOException;
29 import java.nio.file.Files;
30 import java.nio.file.NoSuchFileException;
31 import java.sql.Date;
32 import java.time.ZonedDateTime;
33 import java.util.Set;
34
35 /**
36  * Maven implementation of index context
37  */
38 public class MavenIndexContextMock implements ArchivaIndexingContext {
39
40     private boolean open = true;
41     private IndexingContext delegate;
42     private Repository repository;
43     private FilesystemStorage indexStorage;
44
45     MavenIndexContextMock(Repository repository, IndexingContext delegate) throws IOException {
46         this.delegate = delegate;
47         this.repository = repository;
48         indexStorage = new FilesystemStorage(delegate.getIndexDirectoryFile().toPath(), new DefaultFileLockManager());
49
50     }
51
52     @Override
53     public String getId() {
54         return delegate.getId();
55     }
56
57     @Override
58     public Repository getRepository() {
59         return repository;
60     }
61
62     @Override
63     public StorageAsset getPath() {
64         return indexStorage.getAsset("");
65     }
66
67     @Override
68     public boolean isEmpty() throws IOException {
69         return Files.list(delegate.getIndexDirectoryFile().toPath()).count()==0;
70     }
71
72     @Override
73     public void commit() throws IOException {
74         delegate.commit();
75     }
76
77     @Override
78     public void rollback() throws IOException {
79         delegate.rollback();
80     }
81
82     @Override
83     public void optimize() throws IOException {
84         delegate.optimize();
85     }
86
87     @Override
88     public void close(boolean deleteFiles) throws IOException {
89         open = false;
90         try {
91             delegate.close(deleteFiles);
92         } catch (NoSuchFileException e) {
93             // Ignore missing directory
94         }
95     }
96
97     @Override
98     public void close() throws IOException {
99         open = false;
100         try {
101             delegate.close(false);
102         } catch (NoSuchFileException e) {
103             // Ignore missing directory
104         }
105     }
106
107     @Override
108     public boolean isOpen() {
109         return open;
110     }
111
112     @Override
113     public void purge() throws IOException {
114         delegate.purge();
115     }
116
117     @Override
118     public boolean supports(Class<?> clazz) {
119         return IndexingContext.class.equals(clazz);
120     }
121
122     @SuppressWarnings( "unchecked" )
123     @Override
124     public <T> T getBaseContext(Class<T> clazz) throws UnsupportedOperationException {
125         if (IndexingContext.class.equals(clazz)) {
126             return (T) delegate;
127         } else {
128             throw new UnsupportedOperationException("The class "+clazz+" is not supported by the maven indexer");
129         }
130     }
131
132     @Override
133     public Set<String> getGroups() throws IOException {
134         return delegate.getAllGroups();
135     }
136
137     @Override
138     public void updateTimestamp(boolean save) throws IOException {
139         delegate.updateTimestamp(save);
140     }
141
142     @Override
143     public void updateTimestamp(boolean save, ZonedDateTime time) throws IOException {
144         delegate.updateTimestamp(save, Date.from(time.toInstant()));
145     }
146
147
148 }