1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether;
20
21 import java.io.ByteArrayOutputStream;
22 import java.io.IOException;
23 import java.io.ObjectOutputStream;
24 import java.util.Arrays;
25 import java.util.Collections;
26
27 import org.eclipse.aether.artifact.Artifact;
28 import org.eclipse.aether.artifact.DefaultArtifact;
29 import org.eclipse.aether.collection.CollectRequest;
30 import org.eclipse.aether.collection.CollectResult;
31 import org.eclipse.aether.collection.DependencyCollectionException;
32 import org.eclipse.aether.collection.UnsolvableVersionConflictException;
33 import org.eclipse.aether.graph.DefaultDependencyNode;
34 import org.eclipse.aether.graph.Dependency;
35 import org.eclipse.aether.graph.DependencyNode;
36 import org.eclipse.aether.metadata.DefaultMetadata;
37 import org.eclipse.aether.metadata.Metadata;
38 import org.eclipse.aether.repository.LocalRepository;
39 import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
40 import org.eclipse.aether.repository.Proxy;
41 import org.eclipse.aether.repository.RemoteRepository;
42 import org.eclipse.aether.resolution.ArtifactDescriptorException;
43 import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
44 import org.eclipse.aether.resolution.ArtifactDescriptorResult;
45 import org.eclipse.aether.resolution.ArtifactRequest;
46 import org.eclipse.aether.resolution.ArtifactResolutionException;
47 import org.eclipse.aether.resolution.ArtifactResult;
48 import org.eclipse.aether.resolution.DependencyRequest;
49 import org.eclipse.aether.resolution.DependencyResolutionException;
50 import org.eclipse.aether.resolution.DependencyResult;
51 import org.eclipse.aether.resolution.VersionRangeRequest;
52 import org.eclipse.aether.resolution.VersionRangeResolutionException;
53 import org.eclipse.aether.resolution.VersionRangeResult;
54 import org.eclipse.aether.resolution.VersionRequest;
55 import org.eclipse.aether.resolution.VersionResolutionException;
56 import org.eclipse.aether.resolution.VersionResult;
57 import org.eclipse.aether.transfer.ArtifactNotFoundException;
58 import org.eclipse.aether.transfer.ArtifactTransferException;
59 import org.eclipse.aether.transfer.MetadataNotFoundException;
60 import org.eclipse.aether.transfer.MetadataTransferException;
61 import org.eclipse.aether.transfer.NoRepositoryConnectorException;
62 import org.eclipse.aether.transfer.NoRepositoryLayoutException;
63 import org.eclipse.aether.transfer.NoTransporterException;
64 import org.eclipse.aether.transfer.RepositoryOfflineException;
65 import org.junit.Test;
66
67 public class RepositoryExceptionTest {
68
69 private void assertSerializable(RepositoryException e) {
70 try {
71 ObjectOutputStream oos = new ObjectOutputStream(new ByteArrayOutputStream());
72 oos.writeObject(e);
73 oos.close();
74 } catch (IOException ioe) {
75 throw new IllegalStateException(ioe);
76 }
77 }
78
79 private RequestTrace newTrace() {
80 return new RequestTrace("test");
81 }
82
83 private Artifact newArtifact() {
84 return new DefaultArtifact("gid", "aid", "ext", "1");
85 }
86
87 private Metadata newMetadata() {
88 return new DefaultMetadata("maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT);
89 }
90
91 private RemoteRepository newRepo() {
92 Proxy proxy = new Proxy(Proxy.TYPE_HTTP, "localhost", 8080, null);
93 return new RemoteRepository.Builder("id", "test", "http://localhost")
94 .setProxy(proxy)
95 .build();
96 }
97
98 @Test
99 public void testArtifactDescriptorException_Serializable() {
100 ArtifactDescriptorRequest request = new ArtifactDescriptorRequest();
101 request.setArtifact(newArtifact()).addRepository(newRepo()).setTrace(newTrace());
102 ArtifactDescriptorResult result = new ArtifactDescriptorResult(request);
103 assertSerializable(new ArtifactDescriptorException(result));
104 }
105
106 @Test
107 public void testArtifactResolutionException_Serializable() {
108 ArtifactRequest request = new ArtifactRequest();
109 request.setArtifact(newArtifact()).addRepository(newRepo()).setTrace(newTrace());
110 ArtifactResult result = new ArtifactResult(request);
111 assertSerializable(new ArtifactResolutionException(Arrays.asList(result)));
112 }
113
114 @Test
115 public void testArtifactTransferException_Serializable() {
116 assertSerializable(new ArtifactTransferException(newArtifact(), newRepo(), "error"));
117 }
118
119 @Test
120 public void testArtifactNotFoundException_Serializable() {
121 assertSerializable(new ArtifactNotFoundException(newArtifact(), newRepo(), "error"));
122 }
123
124 @Test
125 public void testDependencyCollectionException_Serializable() {
126 CollectRequest request = new CollectRequest();
127 request.addDependency(new Dependency(newArtifact(), "compile"));
128 request.addRepository(newRepo());
129 request.setTrace(newTrace());
130 CollectResult result = new CollectResult(request);
131 assertSerializable(new DependencyCollectionException(result));
132 }
133
134 @Test
135 public void testDependencyResolutionException_Serializable() {
136 CollectRequest request = new CollectRequest();
137 request.addDependency(new Dependency(newArtifact(), "compile"));
138 request.addRepository(newRepo());
139 request.setTrace(newTrace());
140 DependencyRequest req = new DependencyRequest();
141 req.setTrace(newTrace());
142 req.setCollectRequest(request);
143 DependencyResult result = new DependencyResult(req);
144 assertSerializable(new DependencyResolutionException(result, null));
145 }
146
147 @Test
148 public void testMetadataTransferException_Serializable() {
149 assertSerializable(new MetadataTransferException(newMetadata(), newRepo(), "error"));
150 }
151
152 @Test
153 public void testMetadataNotFoundException_Serializable() {
154 assertSerializable(new MetadataNotFoundException(newMetadata(), newRepo(), "error"));
155 }
156
157 @Test
158 public void testNoLocalRepositoryManagerException_Serializable() {
159 assertSerializable(new NoLocalRepositoryManagerException(new LocalRepository("/tmp")));
160 }
161
162 @Test
163 public void testNoRepositoryConnectorException_Serializable() {
164 assertSerializable(new NoRepositoryConnectorException(newRepo()));
165 }
166
167 @Test
168 public void testNoRepositoryLayoutException_Serializable() {
169 assertSerializable(new NoRepositoryLayoutException(newRepo()));
170 }
171
172 @Test
173 public void testNoTransporterException_Serializable() {
174 assertSerializable(new NoTransporterException(newRepo()));
175 }
176
177 @Test
178 public void testRepositoryOfflineException_Serializable() {
179 assertSerializable(new RepositoryOfflineException(newRepo()));
180 }
181
182 @Test
183 public void testUnsolvableVersionConflictException_Serializable() {
184 DependencyNode node = new DefaultDependencyNode(new Dependency(newArtifact(), "test"));
185 assertSerializable(new UnsolvableVersionConflictException(Collections.singleton(Arrays.asList(node))));
186 }
187
188 @Test
189 public void testVersionResolutionException_Serializable() {
190 VersionRequest request = new VersionRequest();
191 request.setArtifact(newArtifact()).addRepository(newRepo()).setTrace(newTrace());
192 VersionResult result = new VersionResult(request);
193 assertSerializable(new VersionResolutionException(result));
194 }
195
196 @Test
197 public void testVersionRangeResolutionException_Serializable() {
198 VersionRangeRequest request = new VersionRangeRequest();
199 request.setArtifact(newArtifact()).addRepository(newRepo()).setTrace(newTrace());
200 VersionRangeResult result = new VersionRangeResult(request);
201 assertSerializable(new VersionRangeResolutionException(result));
202 }
203 }