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