1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.impl.offline;
20
21 import java.util.Collection;
22
23 import org.eclipse.aether.RepositorySystemSession;
24 import org.eclipse.aether.impl.OfflineController;
25 import org.eclipse.aether.internal.impl.Utils;
26 import org.eclipse.aether.repository.RemoteRepository;
27 import org.eclipse.aether.spi.connector.ArtifactDownload;
28 import org.eclipse.aether.spi.connector.ArtifactUpload;
29 import org.eclipse.aether.spi.connector.MetadataDownload;
30 import org.eclipse.aether.spi.connector.MetadataUpload;
31 import org.eclipse.aether.spi.connector.RepositoryConnector;
32 import org.eclipse.aether.transfer.ArtifactTransferException;
33 import org.eclipse.aether.transfer.MetadataTransferException;
34 import org.eclipse.aether.transfer.RepositoryOfflineException;
35
36 import static java.util.Objects.requireNonNull;
37
38
39
40
41
42
43 public final class OfflineRepositoryConnector implements RepositoryConnector {
44 private final RepositorySystemSession session;
45 private final RemoteRepository remoteRepository;
46 private final OfflineController offlineController;
47 private final RepositoryConnector delegate;
48
49 public OfflineRepositoryConnector(
50 RepositorySystemSession session,
51 RemoteRepository remoteRepository,
52 OfflineController offlineController,
53 RepositoryConnector delegate) {
54 this.session = requireNonNull(session);
55 this.remoteRepository = requireNonNull(remoteRepository);
56 this.offlineController = requireNonNull(offlineController);
57 this.delegate = requireNonNull(delegate);
58 }
59
60 @Override
61 public void close() {
62 delegate.close();
63 }
64
65 @Override
66 public void get(
67 Collection<? extends ArtifactDownload> artifactDownloads,
68 Collection<? extends MetadataDownload> metadataDownloads) {
69 try {
70 Utils.checkOffline(session, offlineController, remoteRepository);
71 } catch (RepositoryOfflineException e) {
72 if (artifactDownloads != null && !artifactDownloads.isEmpty()) {
73 artifactDownloads.forEach(
74 d -> d.setException(new ArtifactTransferException(d.getArtifact(), remoteRepository, e)));
75 }
76 if (metadataDownloads != null && !metadataDownloads.isEmpty()) {
77 metadataDownloads.forEach(
78 d -> d.setException(new MetadataTransferException(d.getMetadata(), remoteRepository, e)));
79 }
80 return;
81 }
82 delegate.get(artifactDownloads, metadataDownloads);
83 }
84
85 @Override
86 public void put(
87 Collection<? extends ArtifactUpload> artifactUploads,
88 Collection<? extends MetadataUpload> metadataUploads) {
89 try {
90 Utils.checkOffline(session, offlineController, remoteRepository);
91 } catch (RepositoryOfflineException e) {
92 if (artifactUploads != null && !artifactUploads.isEmpty()) {
93 artifactUploads.forEach(
94 d -> d.setException(new ArtifactTransferException(d.getArtifact(), remoteRepository, e)));
95 }
96 if (metadataUploads != null && !metadataUploads.isEmpty()) {
97 metadataUploads.forEach(
98 d -> d.setException(new MetadataTransferException(d.getMetadata(), remoteRepository, e)));
99 }
100 return;
101 }
102 delegate.put(artifactUploads, metadataUploads);
103 }
104
105 @Override
106 public String toString() {
107 return OfflinePipelineRepositoryConnectorFactory.NAME + "( " + delegate.toString() + " )";
108 }
109 }