]> source.dussan.org Git - archiva.git/blob
c8e2cd4f0766dd8c9927cdac53868a2351bd6cb7
[archiva.git] /
1 package org.apache.archiva.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  *
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.common.filelock.DefaultFileLockManager;
23 import org.apache.archiva.indexer.ArchivaIndexingContext;
24 import org.apache.archiva.repository.Repository;
25 import org.apache.archiva.repository.storage.FilesystemAsset;
26 import org.apache.archiva.repository.storage.FilesystemStorage;
27 import org.apache.archiva.repository.storage.StorageAsset;
28 import org.apache.maven.index.context.IndexingContext;
29
30 import java.io.IOException;
31 import java.net.URI;
32 import java.nio.file.Files;
33 import java.nio.file.NoSuchFileException;
34 import java.sql.Date;
35 import java.time.ZonedDateTime;
36 import java.util.Set;
37
38 /**
39  * Maven implementation of index context
40  */
41 public class MavenIndexContextMock implements ArchivaIndexingContext {
42
43     private boolean open = true;
44
45     private IndexingContext delegate;
46     private Repository repository;
47     private FilesystemStorage filesystemStorage;
48
49     MavenIndexContextMock( Repository repository, IndexingContext delegate) {
50         this.delegate = delegate;
51         this.repository = repository;
52         try {
53             filesystemStorage = new FilesystemStorage(delegate.getIndexDirectoryFile().toPath().getParent(), new DefaultFileLockManager());
54         } catch (IOException e) {
55             e.printStackTrace();
56         }
57
58     }
59
60     @Override
61     public String getId() {
62         return delegate.getId();
63     }
64
65     @Override
66     public Repository getRepository() {
67         return repository;
68     }
69
70     @Override
71     public StorageAsset getPath() {
72         return new FilesystemAsset(filesystemStorage, delegate.getIndexDirectoryFile().toPath().getFileName().toString(), delegate.getIndexDirectoryFile().toPath());
73
74     }
75
76     @Override
77     public boolean isEmpty() throws IOException {
78         return Files.list(delegate.getIndexDirectoryFile().toPath()).count()==0;
79     }
80
81     @Override
82     public void commit() throws IOException {
83         delegate.commit();
84     }
85
86     @Override
87     public void rollback() throws IOException {
88         delegate.rollback();
89     }
90
91     @Override
92     public void optimize() throws IOException {
93         delegate.optimize();
94     }
95
96     @Override
97     public void close(boolean deleteFiles) throws IOException {
98         this.open = false;
99         try {
100             delegate.close(deleteFiles);
101         } catch (NoSuchFileException e) {
102             // Ignore missing directory
103         }
104     }
105
106     @Override
107     public void close() throws IOException {
108         this.open = false;
109         try {
110             delegate.close(false);
111         } catch (NoSuchFileException e) {
112             // Ignore missing directory
113         }
114     }
115
116     @Override
117     public boolean isOpen() {
118         return open;
119     }
120
121     @Override
122     public void purge() throws IOException {
123         delegate.purge();
124     }
125
126     @Override
127     public boolean supports(Class<?> clazz) {
128         return IndexingContext.class.equals(clazz);
129     }
130
131     @SuppressWarnings( "unchecked" )
132     @Override
133     public <T> T getBaseContext(Class<T> clazz) throws UnsupportedOperationException {
134         if (IndexingContext.class.equals(clazz)) {
135             return (T) delegate;
136         } else {
137             throw new UnsupportedOperationException("The class "+clazz+" is not supported by the maven indexer");
138         }
139     }
140
141     @Override
142     public Set<String> getGroups() throws IOException {
143         return delegate.getAllGroups();
144     }
145
146     @Override
147     public void updateTimestamp(boolean save) throws IOException {
148         delegate.updateTimestamp(save);
149     }
150
151     @Override
152     public void updateTimestamp(boolean save, ZonedDateTime time) throws IOException {
153         delegate.updateTimestamp(save, Date.from(time.toInstant()));
154     }
155
156
157 }